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


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

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-17 22:26 +0200
Organization ATMAN - ATM S.A.
Message-ID <q9826e$t4u$1@node2.news.atman.pl> (permalink)
References (1 earlier) <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>

Show all headers | View raw


W dniu 2019-04-17 o 10:36, Borys Pogoreło pisze:

> Bo taka jest idea Symfony - jest to stosunkowo niskopoziomowy framework /
> zbiór komponentów, z którego dopiero musisz zbudować co potrzebujesz. 

No chwila. Zacytuję Twoje słowa z innego wątku, gdy to samo powiedziałem:

"No to teraz żeś pojechał po bandzie...
Ale powodzenia"


> Nie
> ma sensu porównywać obu tych frameworków pod tym kątem, bo są zupełnie
> inne. Zresztą, Laravel też jest zbudowany w dużej mierze na Symfony.

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.

>> Swoją drogą jak potężny stos musi tworzyć aplikacja "hello world" w
>> Laravelu, to sobie nie jestem w stanie wyobrazić nawet.
> 
> Kilkadziesiąt wywołań, ale Ciebie interesują z reguły te ostatnie.

Jasne, oczywiście. Tylko nie o to mi chodziło :-) Kilkadziesiąt 
wywołań.... dobrze, że stack overflow się nie pojawił. Oczywiście ironizuję.

>> Dlatego odniosłeś wrażenie, że pominąłem całą sekcję dokumentacji.
>> Chiński bym szybciej pojął.
> 
> No patrz, a większość świata uważa, że Laravel jest prostszy do ogarnięcia.

Mierzę swoją miarą. Tak jak pisałem: w tydzień samoedukacji robię takie 
rzeczy jak w Laravelu po miesiącu za diabła nie potrafiłem.

> 
> Mam wrażenie, że inaczej nazywamy te same rzeczy. Daj przykład.

W zasadzie opisałem to poniżej i skomentowałeś to. Ale przeczytaj moją 
odpowiedź.

> 
>> Nie wspominając o konieczności rozbijania jednej złożonej strony na
>> wiele blade'ów zamiast umieszczania prostych bloczków typu
>> render(controller + twig do niego). Wtedy twig podąża za kontrolerem
>> przenosząc taki bloczek w inne miejsce.
> 
> I tak oto opisałeś View Composer - do którego Cię też już odsyłałem.

Tak, zgadza się, że odsyłałeś. I wyczytałem w nim, że composery budujemy 
w oparciu o ServiceProvider's. 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:
1) includować do layoutu
2) przewidzieć w layoucie miejsce na bloki kodu wygenerowane w 1)
3) powstawiać treści poprzez chyba yield/parent (już nie pamiętam)

Gdy klient zmieni zdanie i trzeba przenieść działanie powyższego na 
jakąś inną podstronę, to musimy mozolnie bloczek po bloczku pozabierać.

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ń.

>> A czy gdy testujesz fragment kodu na np. PHP Sandboxie (taka strona
>> WWW), to również dbasz tam o takie rzeczy skoro po zamknięciu
>> przeglądarki kod i tak zniknie?
> 
> Oczywiście, że nie. Ale jeśli bym wystawiał jakiś kawałek kodu na widok
> publiczny z pytaniem czemu nie działa, to zadbałbym o jego maksymalną
> czytelność. Bo jeśli fragment, o który pytasz, nawet nie wiadomo do końca
> co robi, to wielu sobie odpuści.

Ok, ja to rozumiem. Tylko jaki jest sens opisywania, co dana metoda robi 
skoro nie tego dotyczyło moje pytanie. Chodziło mi o sposób 
przekazywania parametrów do jakiejkolwiek funkcji jeśli wstrzyknięcia 
czegokolwiek blokują mi tą możliwość.

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. Mnie interesują tylko te dwa nawiasy, które są za każdą nazwą 
funkcji.

Obrazowo: jadę do mechanika bo wycieraczki mi się zużyły a ja nie 
potrafię ich zmienić. Mechanik zaczyna mnie się dopytywać o ciśnienie 
sprężania w komorze cylindra. Wierci mi dziurę w brzuchu, że jadę na 
zmianę wycieraczek a ja się nie przygotowałem bo nie znam wartości tego 
ciśnienia. Zadaje pytania czy wtryski nie leją i czy zwrotnica turbiny 
się nie zacina. Po co tak?

> Dalej nie rozumiem. Przecież tam wołasz metodę getRandom() na tym obiekcie,
> do której możesz przekazać parametry jakie chcesz. Masz na myśli parametry
> konstruktora?

To może obrazowo. Funkcja wygląda następująco:

   private function getRandom(MarekService $marekService)

Czy tak?

Ja chcę przekazać jej wartość 1234 bo jest mi to do czegoś potrzebne w 
ciele tejże funkcji. Co zrobi następujący fragment kodu?

$this->getRandom(1234)

Wywali się! Zresztą chyba sobie sam odpowiedziałem na pytanie jak należy 
problem rozwiązać. Coś mnie przymuliło, że na to nie wpadłem. Sypiam po 
kilka godzin przez ostatnie dni, więc na prostych rzeczach się 
wykładam... Sorki. Funkcja po modyfikacji powinna wyglądać tak:


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

... i takiej odpowiedzi oczekiwałem.

I jeszcze raz: co miałby usprawnić gdybym wymyślił jakąkolwiek 
funkcjonalność dla tej funkcji?

>> Ale tam też nie ma addFash(), o który pytam :-(
> 
> Ten jest tutaj:
> https://github.com/symfony/symfony/blob/1fcc99402137471d68996ffb4b466e3aaee19447/src/Symfony/Bundle/FrameworkBundle/Controller/ControllerTrait.php#L157

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?

Teraz najbardziej interesuje mnie sposób docierania do takich 
informacji. Ale za nim o tym na końcu.

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:

App::addFlash() { return App::cosTam() {return NieApp::cosInnego() ..... 
Zagniezdzenie52::ostatniaFunkcja() {return "i tak tu kodu nie 
znajdziesz"} } ;}

> Gdyby w dokumentacji mieli opisywać każdą pojedynczą metodę, to powstałby
> drugi kod źródłowy...

To lepiej nie wiedzieć o istnieniu jakiejkolwiek metody? W Laravelu lub 
Yii jakoś nie mieli z tym problemu. A popatrz na dokumentację PHP. 
Mogliby też źródła podać a mimo to...

Da się? Da się!

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

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ść.

Czy ściągasz kompletne środowisko Symfony na dysk, by potem użyć 
wyszukiwarki z jakiegoś IDE? Mi PHPStorm domyślnie wyłącza vendor'a by 
nie zaśmiecać wyników wyszukiwania. I tak jest moim zdaniem lepiej.

-- 
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