PHP 5.4: wywołanie metody przy tworzeniu obiektu!

Logo PHPKrótko i na temat: najnowsze wydanie PHP 5.4 RC1 dostało nową funkcjonalność - wywoływanie metody od razu przy tworzeniu instancji obiektu. Bardzo często w kodzie pojawia się utworzenie obiektu tylko po to, żeby jedną metodę wywołać, np. pobrać dane z bazy:

$dbArticles = new DbArticles;
$articles = $dbArticles->fetch(array('page' => 3));

Teraz można to ubrać w jedno polecenie:

$articles = (new DbArticles)->fetch(array('page' => 3));

Zmiana kosmetyczne i głównie dla "upiększenia" kodu (chociaż przy okazji nie jest tworzona zmienna), ale moim zdaniem świeta rzecz. Zdarzało mi się wcześniej nawet robić metodę statyczną do pobierania instancji, żeby mniej więcej coś takiego zasymulować, podczas gdy np. JavaScript i innę języki mają to od dawna. Teraz ma to też PHP!


Pokaż ten wpis innym: wykop.pl facebook.com twitter.com

Komentarze do wpisu „PHP 5.4: wywołanie metody przy tworzeniu obiektu!”

  1. 16 listopada 2011 @ 12:44

    Gratulacje! PHP wkrótce będzie umiało równie dużo co inne języki przed ośmiu laty!

  2. 16 listopada 2011 @ 12:48

    Dokładnie tak to niestety wygląda.

  3. 16 listopada 2011 @ 16:26

    Well, Kohana rozwiązuje to przez factory method, więc raczej nie brakowało mi strasznie tej metody (Model::Factory('articles')->fetch(array('page' => 3)))

  4. 16 listopada 2011 @ 17:05

    To się nazywa anonymous object, a nie jakieś wywołanie, wywołanie to tak przy okazji.

  5. 16 listopada 2011 @ 17:07

    Tak czytam ten release note i smutłem: "Changed silent conversion of array to string to produce a notice." - to już dawno powinno być warning/error :<

  6. 16 listopada 2011 @ 18:45

    A można już w PHP zrobić tak?

    $x->getArray()[1]

  7. 16 listopada 2011 @ 21:28

    Heh, chciałem zadać dokładnie to samo pytanie, co Piotrek. No nic, poczekam na odpowiedź.

  8. 16 listopada 2011 @ 21:42

    Nie może i pewnie jeszcze długo nie będzie można. Trochę obiektowość jest tutaj naciągana.

  9. 17 listopada 2011 @ 07:35

    Jak to ma się do obiektowości? Wiem, że spałem na wykładach z programowania obiektowego, ale wywołania wartości spod indeksu ze zwracanego wyniku jakoś niekojarzę...

  10. 17 listopada 2011 @ 08:55

    OK, trochę skrót myślowy, ale zazwyczaj na takie konstrukcje pozwalają języki, które "poważnie" podchodzą do obiektowości, gdzie nieważne w jaki sposób otrzymujesz zmienną (np. tak jak tu zwracana jest z metody), możesz jej używać normalnie. A w PHP trzeba wprost podać jej nazwę. Podobnie jest z funkcjami, które nie mogą być anonimowe i wywołane w locie. A zazwyczaj radzą sobie z tym języki, które funkcje również traktują jako obiekty.

  11. 17 listopada 2011 @ 13:00

    ...jak na przykład Python, gdzie masz do wyboru lambdy (usunięte w Pythonie 3), którymi da się tylko pojedynczy statement wykonać, albo normalne nazwane funkcje.

Napisz, co o tym myślisz
captcha
dekoderek-jogg