🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.php
Article #232364

Re: Symfony 4 - jaka korzyść z wstrzykiwanych service providerów?

#232364
From: Marek S
Date: Mon, 15 Apr 2019 21:38
81 lines
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-mail
References: <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