Wielokrotny operator obiektu -> w Laravel

0

Witam
Stawiam pierwsze kroki w Laravel i taki oto zapis powoduje mnóstwo niezrozumienia w kwestii gramatyki php czy nawet Laravela:

$User->where(...)->width(comments)->first()

Jak to wielokrotne wywołanie operatora -> działa? Wydaje się, że first() odnosi się do pierwszego obiektu (mamy dwa modele user i comments) a nie drugiego. Operator -> wygląda (ma za sobą funkcje) na dwukrotne wywołanie funkcji tego samego obiektu w jednym zapisie. (Przechodze z C++ i takiego dziwum nie spotkałem.)

W takim razie będzie można zapytać, jak zapisać pierwsze pobranie first() rekordu z tabeli comments?

Ogólnie zachodze w głowe jak to działa, gdyby ktoś wyjaśnił budowe obiektów reprezentujących modele - wydaje się, że pierwszy obiekt dla modelu user ma pola prywatne z modelem comments (tworzone w momencie wywołania metody hasMany())

--
Vorname Name

2

To się nazywa method chaining - jak wpiszesz w Google php method chaining, uzyskasz masę poradników opisujących co i jak.

przechodze z C++ i takiego dziwum nie spotkałem

Ależ oczywiście, że spotkałeś - method chaining występuje (nie do końca jawnie) między innymi tu:

cout << "hello" << "world";

Reszta pytań jest niestety dla mnie niezrozumiała.

1

każda metoda w twoim kodzie wewnętrznie zwraca "this", dopiero first() zwraca już inny obiekt.

0

Właśnie jestem już w tym miejscu analizowania sposobu implementacji kodu łańcuchów ... dotarłem do this i zastanowiłem się, czy metody dajmy na to w środku łańcucha mogą zwracać obiekty różnych typów i wychodzi, że mogą. Fajne...

Dlatego do analizy Laravel potrzebne jest sprawdzanie typów obiektów zwracanych przez metody w łańcuchu metod .. mam nadzieje, że w dwóch różnych generycznie klasach nie dali tych sam nazw metod...

0

a czemu nie? to co podałeś to query builder gdzie budujesz zapytanie, ale możesz sobie też robić np whera na pobranej już kolekcji, jest to intuicyjne. To że robisz sobie to jednym ciągiem to ułatwienie. Jak na początku się gubisz to możesz sobie pisać wszystko osobno, nikt ci nie broni, ale wiedz, że nikt tak nie pisze ;)

0
Patryk27 napisał(a):

To się nazywa method chaining - jak wpiszesz w Google php method chaining, uzyskasz masę poradników opisujących co i jak.

Tego terminu mi brakowało ... już sobie wyszukałem i przeanalizowałem sposób implementacji w C++... co ciekawe tego zapisu używam masowo w Pythonie i JQuery... ale taki przepływ danych ... kolekcje ... implementacja zapytania SQL w ORM wymaga analizy od podszewki. (Sam SQL w UML to potworek.) Do tego jeszcze eager i leazy loading.

Na ten temat, na temat tej jednej linijki są całe elaboraty na stackoverflow.

przechodze z C++ i takiego dziwum nie s
Ależ oczywiście, że spotkałeś - method chaining występuje (nie do końca jawnie) między innymi tu:

cout << "hello" << "world";

Właśnie, niejawnie... To jakaś moda, dużo programowałem różne rzeczy i łańcucha metod nie spotkałem w C++. Łańcuchy obiektów wszędzie.

Reszta pytań jest niestety dla mnie niezrozumiała.

Ja już sobie to sam przeanalizuje ... brakowało mi właśnie typów i kolejności wykonywania operacji.

Method chaining (jaki jest polski odpowiednik) wskazuje na naturalną możliwość kompilarora. W języku C++ można jeszcze nawiasami () priorytetować kolejność wykonania w łańcuchu... czasami trzeba. Ale zastanawiam się, czy ktoś przeciążył możliwości kompilatora do nieowybrażalnych uwikłań kodu? Był jakiś dowcip na ten temat a właściwie anegdota, kiedy twórcy, po wpisaniu jakiego zawiłego kodu przestali pracować nad parserem C++.

0
mr_jaro napisał(a):

a czemu nie? to co podałeś to query builder gdzie budujesz zapytanie, ale możesz sobie też robić np whera na pobranej już kolekcji, jest to intuicyjne. (...)

No nie wiem, czy takie oczywiste, szczególnie, gdy chce na szybko przewidzieć zwracane dane (czytam na razie książkę o Laravel) bez znajomości zwracanych typów i metod w obiektach. Jak wspomniałem na temat tej jednej linijki są całe wypracowania na stackoverflow.

0

Dla mnie oczywiste, tylko, że ja w php siedzę już 8 lat, a w laravelu 4,5.

0
mr_jaro napisał(a):

Dla mnie oczywiste, tylko, że ja w php siedzę już 8 lat, a w laravelu 4,5.

Ja, jeśli chodzi o Laravel to ja jestem ... w drugim rozdziale.

Jednak patrząc na oferty pracy, to Laravel nie wydaje się w Polsce zbyt popularny.

0

Książek o larvie nie czytałem nigdy, docu i laracasty wystarczą. Co do popularności to powoli się to zmienia, jak zaczynałem to pracowałem w jednej z niewielu firm, które wchodziły w laravela.

0
mr_jaro napisał(a):

Książek o larvie nie czytałem nigdy, docu i laracasty wystarczą. Co do popularności to powoli się to zmienia, jak zaczynałem to pracowałem w jednej z niewielu firm, które wchodziły w laravela.

To jest kwestia indywidualna, ja mam pamięć przestrzenną kontekstową. Oczywiście też doczytuje szczegóły w dokumentacji...

Za to w Niemczech wydaje mi się, że Laravel jest teraz Top 1 a i oferty zdalne się też znajdą.

0
Vorname Name napisał(a):

Za to w Niemczech wydaje mi się, że Laravel jest teraz Top 1 a i oferty zdalne się też znajdą.

To jest taki trochę błąd janusz-softów, jeden framework do wszystkiego, brak znajomości native php, potem jest podobna opinia jak o wordpressie, że do niczego itp.

0
czysteskarpety napisał(a):
Vorname Name napisał(a):

Za to w Niemczech wydaje mi się, że Laravel jest teraz Top 1 a i oferty zdalne się też znajdą.

To jest taki trochę błąd janusz-softów, jeden framework do wszystkiego, brak znajomości native php, potem jest podobna opinia jak o wordpressie, że do niczego itp.

To tak się da, wziąć się za framework bez znajomości native php? Niemożliwe ...

Patrząc na niemieckie strony internetowe zawsze działają bez zarzutu i na wszystkich urządzeniach. Wziąłem się za pierwszy framework z aktualnymi książkami i popularny w statystykach.

Statystyki na dziś z pewnego niemieckiego serwisu z pracą:

  • Symfony 75 ofert
  • Laravel 62 oferty
  • Zend 36 ofert
  • CakePHP 6 ofert
  • CodeIgniter 5 ofert

Do tego Laravel podobno jest na piewszym miejscu w rankignu globalnym...

Tylko jeszcze nie wiem, co do tego dobrać: Angular, Node, Vue, React, itd. ?

0
Vorname Name napisał(a):

Tylko jeszcze nie wiem, co do tego dobrać: Angular, Node, Vue, React, itd. ?
Node to raczej zamiast Laravela.

A co do reszty - to zależy. Poczytaj sobie o nich, zobacz jak wygląda przykładowy kod, wybierz to, co Ci najbardziej pasuje.

1 użytkowników online, w tym zalogowanych: 0, gości: 1