Article View: pl.comp.lang.php
Article #232369Re: Symfony 4 - jaka korzyść z wstrzykiwanych service providerów?
From: Borys Pogoreło
Date: Tue, 30 Apr 2019 14:13
Date: Tue, 30 Apr 2019 14:13
83 lines
4807 bytes
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-mailReferences:
<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