Nowości z php.internals – instance method call

I stało się, wyśniona przez niektórych funkcjonalność – wywoływanie metody w jednej linii z konstrukcją obiektu zostało zgłoszone jako RFC. Co to oznacza ? O ile zostanie zaakceptowane, będziemy mogli pisać tak:


$kot = new Foo()->ala()->ma()->kota();

zamiast:


$foo = new Foo();
$kot = $foo->ala()->ma()->kota();

Jak to mówią, mała rzecz a cieszy. Prawdopodobnie przejdzie, sądząc po wypowiedziach deweloperów na liście. Cieszycie się ?

  1. Sebastian Tarach says:

    To się łatwo da emulować tworząc metodę statyczną np. createInstance(). Ja to bym bardziej chciał mieć coś takiego. ($zmienna = $Foo->getObject())->operacja();

    Żebym mógł zwrócić przypisać obiekt do zmiennej i wywołać jego metodę w jednej linijce.

  2. @sebastian
    To się łatwo da zrobić zwracąc z getObject() $this 😉

  3. Sebastian Tarach says:

    Eee a mógłbyś podać jakiś przykład?

  4. Tak po dłuższym zastanowieniu jak przeczytałem to co napisałeś to muszę cię prosić o wytłumaczenie tego jeszcze raz bo mam wrażenie że nie do końca twój pomysł zrozumiałem 😉

  5. tdroL says:

    Może o coś takigo mu chodziło (przykład z Kohany):
    $newsy = Model::factory(‘news’)->find_all();

  6. Sebastian Tarach says:

    :facepal: Przecież podałem wam kod.

    ($zmienna = $Foo->getObject())->operacja();

    1. Pobieram obiekt z $Foo metodą getObject()
    2. Przypisuję pobrany obiekt do $zmienna
    3. Wykonuję na pobranym obiekcie jakąś metodę.

  7. Szczerze Ci muszę powiedzieć, że jest to zupełnie nieczytelne, dlatego nie sądzę, żeby był to dobry pomysł :>

  8. eRIZ says:

    Dlaczego dopiero teraz… :X

  9. No cóż, myślę, że to taki urok open source 😛

  10. Tak jak napisałeś, mała rzecz, a cieszy. Oby więcej takich ułatwień – aczkolwiek zanim to dogoni C++ to jeszcze trochę poczekamy. ;]

  11. Ja bym wolał, żeby goniło Scalę, Clojure albo Pythona ;). Niestety C++ to chyba jeszcze większy bałagan niż PHP :>

  1. There are no trackbacks for this post yet.

Leave a Reply

Notify me of followup comments via e-mail. You can also subscribe without commenting.