Article View: pl.comp.lang.php
Article #232364Re: Symfony 4 - jaka korzyść z wstrzykiwanych service providerów?
From: Marek S
Date: Mon, 15 Apr 2019 21:38
Date: Mon, 15 Apr 2019 21:38
81 lines
4562 bytes
4562 bytes
W dniu 2019-04-15 o 00:56, Borys Pogoreło pisze: >> Prościej byłoby w konstruktorze przypisać do zmiennej prywatnej: >> >> $this->prv=new MarekService(); >> >> ...i dalej w kodzie posługiwać się $this->priv zamiast każdorazowo >> wstrzykiwać coś. > > Autowiring ma za zadanie dostarczyć Ci gotowy obiekt. Czy operator new nie tworzy właśnie gotowego obiektu? Przedebugowałem kod i wyszło mi, że pierwsze wstrzyknięcie jest równoważnikiem wywołania new. Kolejne: to już korzystanie z tego obiektu. > Jeśli potrzebujesz go > w wielu miejscach, to rzecz jasna najwięcej sensu ma wstrzyknięcie go w > konstruktorze. Tak też myślałem. Tutoriale czasem powodują moje zakłopotanie. W Udemy gość pokazuje wstrzykiwanie w wielu metodach kontrolera. Wydało mi się to ... wręcz patologiczne. Pewnie jeszcze wrócę tu na grupę z podobnymi doświadczeniami do wyprostowania - więc z góry dziękuję za wyrozumiałość. > > Z kolei powyższy przykład nie ma sensu - jeśli potrzebujesz nowy obiekt, to > go utwórz, do tego autowiring nie jest potrzebny. Dziś dyskutowałem z kolegą na ten sam temat. Zwrócił mi uwagę na pewną cechę Symfony. Można w niej zwyczajnie osadzać w twigach dowolną ilość kontrolerów i wskazywać na metody jakie mają renderować dany fragment. Tak na marginesie w Laravelu to było niby też możliwe ale i tak bardzo ograniczone funkcjonalnie - m.in. dlatego pożegnałem ten framework. Może się zdarzyć, że niektóre kontrolery będą potrzebowały MarekService. Wtedy używając wstrzyknięcia w konstruktorach (a nie new) powodujemy, że serwis zostanie zainicjowany raz, przez pierwszy w kolejności kontroler, a reszta kontrolerów będzie korzystała z instancji serwisu. > Po pierwsze to ta metoda ma wyjątkowo nieczytelną nazwę. getRandom...co? :-D :-D Ok. Następnym razem nazwę ją dupa(). Serio! :-D Wtedy nikt nie śmie zapytać do czego dupa służy :-D Taki dialekt paru moich znajomych z powodzeniem stosuje (ja również) jako odpowiednik Lorem ipsum w tekstach pisanych :-D > Najpierw określ, co ta metoda (i usługa jako taka) ma w ogóle robić, bo na > razie zwraca tablicę?/kolekcję? A różnie. W ramach testów zmieniam do woli jej funkcjonalność. Pierwotnie była to tablica, a teraz kolekcja ORM. Jutro być może będzie coś innego :-D > gifts bez żadnych zmian. A MarekService to > już w ogóle z niczym się nie kojarzy - ale to jak rozumiem po prostu testy. > Dokładnie tak :-D Wszystko co robię z Symfonią, wielokrotnie trafiało do kosza i inicjowałem nowe struktury w celach poznawczych. I jeszcze przez jakiś czas tab będzie, dopóki nie poznam środowiska by się w nim sprawnie poruszać. P.S. W międzyczasie wynikła pewna niedogodność dla mnie. W odróżnieniu od Laravela, czystego PHP, JS, CSS, HTML, cokolwiek - nie potrafię poruszać się po dokumentacji Symfony. Przykładowo, w wielu przykładach kontrolerów widuję $this->addFlash(). Z jakiegoś komentarza w kodzie dowiedziałem się, że jest to odpowiednik: $request->getSession()->getFlashBag()->add() Załóżmy jednak, że czyjś komentarz mi nie wystarcza i chciałbym w oficjalnej dokumentacji poczytać o tym. Jak docierasz do takich informacji? Masz jakąś listę linków? Dlaczego ta funkcja wydaje się być nieudokumentowaną, choć jest powszechnie używana? W tym względzie dałbym jako adept, mega wielki minus... -- Pozdrawiam, Marek
Technical Details
Message-ID:
<q92tkr$99a$1@node2.news.atman.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!.POSTED!not-for-mailReferences:
<q90548$dop$1@node1.news.atman.pl> <gvp9os44wga7.qk7j5bqtq9y4$.dlg@40tude.net>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!.POSTED!not-for-mail From: Marek S <precz@spamowi.com> Newsgroups: pl.comp.lang.php Subject: Re: Symfony 4 - jaka korzyść z wstrzykiwanych service providerów? Date: Mon, 15 Apr 2019 23:38:33 +0200 Organization: ATMAN - ATM S.A. Lines: 81 Message-ID: <q92tkr$99a$1@node2.news.atman.pl> References: <q90548$dop$1@node1.news.atman.pl> <gvp9os44wga7.qk7j5bqtq9y4$.dlg@40tude.net> NNTP-Posting-Host: 89-70-94-204.dynamic.chello.pl Mime-Version: 1.0 X-Trace: node2.news.atman.pl 1555364315 9514 89.70.94.204 (15 Apr 2019 21:38:35 GMT) X-Complaints-To: usenet@atman.pl NNTP-Posting-Date: Mon, 15 Apr 2019 21:38:35 +0000 (UTC) User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.6.1 In-Reply-To: <gvp9os44wga7.qk7j5bqtq9y4$.dlg@40tude.net> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit