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