Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > pl.comp.lang.php > #16148

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

From Marek S <precz@spamowi.com>
Newsgroups pl.comp.lang.php
Subject Re: Symfony 4 - jaka korzyść z wstrzykiwanych service providerów?
Date 2019-04-15 23:38 +0200
Organization ATMAN - ATM S.A.
Message-ID <q92tkr$99a$1@node2.news.atman.pl> (permalink)
References <q90548$dop$1@node1.news.atman.pl> <gvp9os44wga7.qk7j5bqtq9y4$.dlg@40tude.net>

Show all headers | View raw


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

Back to pl.comp.lang.php | Previous | NextPrevious in thread | Next in thread | Find similar


Thread

Symfony 4 - jaka korzyść z wstrzykiwanych service providerów? Marek S <precz@spamowi.com> - 2019-04-14 22:27 +0200
  Re: Symfony 4 - jaka korzyść z wstrzykiwanych service providerów? Borys Pogoreło <borys@pl.edu.leszno> - 2019-04-15 00:56 +0200
    Re: Symfony 4 - jaka korzyść z wstrzykiwanych service providerów? Marek S <precz@spamowi.com> - 2019-04-15 23:38 +0200
      Re: Symfony 4 - jaka korzyść z wstrzykiwanych service providerów? Borys Pogoreło <borys@pl.edu.leszno> - 2019-04-16 17:55 +0200
        Re: Symfony 4 - jaka korzyść z wstrzykiwanych service providerów? Marek S <precz@spamowi.com> - 2019-04-17 00:11 +0200
          Re: Symfony 4 - jaka korzyść z wstrzykiwanych service providerów? Borys Pogoreło <borys@pl.edu.leszno> - 2019-04-17 10:36 +0200
            Re: Symfony 4 - jaka korzyść z wstrzykiwanych service providerów? Marek S <precz@spamowi.com> - 2019-04-17 22:26 +0200
              Re: Symfony 4 - jaka korzyść z wstrzykiwanych service providerów? Borys Pogoreło <borys@pl.edu.leszno> - 2019-04-30 16:13 +0200

csiph-web