🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

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

#232369
From: Borys Pogoreło
Date: Tue, 30 Apr 2019 14:13
83 lines
4807 bytes
Dnia Wed, 17 Apr 2019 22:26:50 +0200, Marek S napisał(a):

> Tak, widziałem iż sporo rzeczy dociąganych jest z Symfony. Sęk w tym, że 
> implementacja tych dobrodziejstw w Laravelu kojarzy mi się z brodzeniem 
> po pas w szambie by po omacku wyłowić te proste mechanizmy oblane 
> fasadami tylko po to by łatwo nie było.

Jestem ciekaw, kiedy odkryjesz, że Symfony jest zbudowane na identycznej
idei kontenera IoC. Jedynie nie ma "fasad".

> Tak, zgadza się, że odsyłałeś. I wyczytałem w nim, że composery budujemy 
> w oparciu o ServiceProvider's. 

Nie, budujesz je w dowolny sposób.

> ServiceProviders nie potrafią obsłużyć akcji, bo do tego służą
> kontrolery. Więc rysujemy ServiceProviderami poprzez View Composer, a
> akcje przechwytujemy Kontrolerami tylko po to by i tak przekazać te
> zdarzenia do ServiceProviderów by zaktualizowały wyświetlaną treść. Ale
> na tym nie koniec bo jeszcze ServiceProvidera trzeba osadzić w blade,
> który generuje bloki kodu HTML. Tego blade trzeba:
> (...)

OMG, ja nie wiem co Ty wyprodukowałeś w tym kodzie, ale po trzecim
przeczytaniu poddałem się. Ja nigdy nie miałem potrzeby zbudowania czegoś
tak skomplikowanego, tym bardziej do bloczka wyświetlającego produktu.
Ergo, robisz coś źle i/lub za mało poznałeś koncepcje rządzącę
frameworkiem.

> W Symfony używam do obu celów jednego kontrolera poprzez 
> render(controler name + twig name) - opisowo. Zajmuje to 1 linijkę w 
> twigu. Jeśli klientowi nie odpowiada generowana kolumna newsów 
> (przykładowo), to przenoszę tę jedną linijkę kodu na inną podstronę. 
> Banalne! Nie pierdzielę się z siatką powiązań.

Patrz wyżej. Przy normalnie zrobionym komponencie musiałbyś jedynie
przenieść jakieś @section / @component / w ostatecznosci @inject +
odwołanie.

> Co za różnica jak te funkcje się nazywają - jak je nazwiesz, takie będą. 
> Można pojechać z ich nazwami z Lorem Ipsum bo nie ma to żadnego 
> znaczenia. 

Ok, rozumiem, to więcej pisać nie musisz.

>    private function getRandom(int $ukochanaLiczba, MarekService 
> $marekService)

O ile w ogóle potrzebujesz w niej ów MarekService, to tak.

> Wow! W dodatku jest to trait! Więc addFlash() będzie dostępny tylko tam, 
> gdzie framework osadza tego traita. Czyli jak wylistować klasy z tym 
> traitem by dowiedzieć się czy przypadkiem jedna z nich nie jest używana 
> przeze mnie jako bazowa?

Załadować do IDE i kliknąć w "znajdź referencje".

> Pamiętasz, co pisałem o Laravelu? Gdybyś chciał dotrzeć do podobnej 
> funkcji w źródłach Laravela, to ścieżka miałaby kilkadziesiąt wywołań i 
> obrazowo wyglądała by tak:

I słusznie, bo to są proste i łatwo testowalne funkcje.

> Trudno mi sobie wyobrazić naukę frameworka z jego źródeł.

Niestety, czasem nie ma innego wyjścia. Zwłaszcza, gdy chcesz zrobić coś
nietypowego. Przykładowo w Laravelu dynamicznie utworzyć adapter FlySystem
nie korzytający z konfiguracji frameworka. Rzecz banalna, gdy zajrzysz do
źródeł, ale nikt nie będzie tego dokumentował dla tych pięciu
zainteresowanych osób.

> A teraz na przykładzie addFlash(). Jak jego znalazłeś? Interesuje mnie 
> metodyka. Ja szukałem w Google "symfony addFlash" i poddałem się widząc 
> rezultaty. W życiu bym nie wpadł, że trzeba otworzyć jeden z 9785676 
> plików Symfony i mieć tyle szczęścia by go w trafić w pierwszej setce 
> podejść.

Najprościej po prostu skorzystać z wyszukiwania w IDE z uwzględnieniem
całego projektu. Albo w GitHubie.

-- 
Borys Pogoreło
borys(#)leszno,edu,pl
Technical Details
Message-ID: <12tzl4gb7vahl.1iukrfex7k8fp.dlg@40tude.net>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.promontel.net.pl!not-for-mail
References: <q90548$dop$1@node1.news.atman.pl> <gvp9os44wga7.qk7j5bqtq9y4$.dlg@40tude.net> <q92tkr$99a$1@node2.news.atman.pl> <ppp4e0u3vnag$.ulgdsy0emagt.dlg@40tude.net> <q95jus$ncl$1@node2.news.atman.pl> <hfeh73qmh60x$.19ps8ncbqtknq.dlg@40tude.net> <q9826e$t4u$1@node2.news.atman.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.promontel.net.pl!not-for-mail
From: Borys Pogoreło <borys@pl.edu.leszno>
Newsgroups: pl.comp.lang.php
Subject: Re: Symfony 4 - jaka korzyść z wstrzykiwanych
 service providerów?
Date: Tue, 30 Apr 2019 16:13:05 +0200
Organization: snafu
Lines: 83
Message-ID: <12tzl4gb7vahl.1iukrfex7k8fp.dlg@40tude.net>
References: <q90548$dop$1@node1.news.atman.pl> <gvp9os44wga7.qk7j5bqtq9y4$.dlg@40tude.net> <q92tkr$99a$1@node2.news.atman.pl> <ppp4e0u3vnag$.ulgdsy0emagt.dlg@40tude.net> <q95jus$ncl$1@node2.news.atman.pl> <hfeh73qmh60x$.19ps8ncbqtknq.dlg@40tude.net> <q9826e$t4u$1@node2.news.atman.pl>
NNTP-Posting-Host: public-gprs204691.centertel.pl
Mime-Version: 1.0
X-Trace: thunar.promontel.net.pl 1556633571 20339 46.134.138.212 (30 Apr 2019 14:12:51 GMT)
X-Complaints-To: abuse@promontel.net.pl
NNTP-Posting-Date: Tue, 30 Apr 2019 14:12:51 +0000 (UTC)
User-Agent: 40tude_Dialog/2.0.14.1pl
X-fnord: obey.
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit