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


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

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 00:11 +0200
Organization ATMAN - ATM S.A.
Message-ID <q95jus$ncl$1@node2.news.atman.pl> (permalink)
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>

Show all headers | View raw


W dniu 2019-04-16 o 17:55, Borys Pogoreło pisze:

>> 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.
> 
> W najprostszym przypadku tak właśnie jest. Ale zadaniem autowiringu nie
> jest proste tworzenie obiektów, tylko wyciąganie ich z kontenera. Gdzie
> najczęściej są już skonfigurowane.

No właśnie o tym piszę :-)

> Mam wrażenie, że kompletnie pominąłeś ten temat w Laravelu, choć było to
> tłumaczone.

Właśnie to jest ta chwila, o której wspominałem. W Laravelu nie byłem w 
stanie ogarnąć ideologii. Czytałem niektóre rozdziały po 5x testując 
równolegle kod. Nie mając w głowie całej tej ideologii, nie byłem w 
stanie wyobrazić sobie aplikacji.

Zapoznając się z Symfonią mam wrażenie, że jest ona prosta jak pisanie w 
czystym PHP. Bez bełkotu fasadowego, który czasem nawet jedną PHPową 
funkcję zamykał w sobie, by ją pod inną nazwą udostępnić. A do tego nie 
było szans na analizę źródeł gdy coś w dokumentacji nie było jasne bo 
źródła w Laravelu to najczęściej 1-linijkowy kod, który zwykle woła inny 
1-linijkowy kod a ten kolejny. Udało mi się w ten sposób prześledzić 
kilkanaście poziomów zagnieżdżenia i niczego się nie dowiedzieć. Swoją 
drogą jak potężny stos musi tworzyć aplikacja "hello world" w Laravelu, 
to sobie nie jestem w stanie wyobrazić nawet. W Symfonii kod frameworka 
może czasem za dokumentację robić.

Dlatego odniosłeś wrażenie, że pominąłem całą sekcję dokumentacji. 
Chiński bym szybciej pojął.

>> 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.
> 
> I bardzo dobrze, że tak było, bo rozrzucanie logiki po wielu kontrolerach
> to średni pomysł i szybka droga do bałaganu w kodzie, którego już nikt poza
> autorem nie ogarnie.

Nie rozumiem? W Symfonii udało mi się zrobić przeglądarkę newsów i jej 
renderowanie za pomocą 1 kontrolera na stronie generowanej z udziałem 
kilku innych kontrolerów. W Laravelu każdy podobny do w/w funkcjonalnie 
kontroler musiał mieć brata bliźniaka w postaci serwisu, bo tylko 
serwisy dawało się osadzać. Więc w laravelu jedna funkcjonalność była 
rozwalona na przynajmniej 2 pliki. A w Symfonii masz tylko 1 przecież.

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.

Właśnie to bałaganiarstwo Laravela też było gwoździem do trumny. 
Oczywiście opisuję swoje wrażenia.

> Mógłbym zrobić Ci wykład z dbania o poprawne nazewnictwo w kodzie, również
> testowym, który pokazujesz światu. Ale... chyba nie ma sensu.

Ok, to może inaczej. Konkretnie. Robię jakąś funkcję, której zadaniem 
będzie istnieć przez kilka minut - aż sprawdzę jak jakiś mechanizm 
działa a potem ją skasuję.

Powiedz mi zatem, jak Ty dbasz o poprawne nazewnictwo w takich 
przypadkach? Czy tworzysz sekcje autodokumentacji do takich metod? 
Pchasz to na Gita? Opisujesz potem powody usunięcia tejże funkcji w 
commitach? Czy tą czynność rejestrujesz np. w Sprintach na Scumie? 
Tworzysz do niej backloga na Agile Acceleratorze i powołujesz się na ID 
ticketu w commitach? Masz jakiegoś testera, któremu zlecasz testy kodu 
pokroju "hello world"?

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?

Serio?

Sorki, ale wydaje mi się paranoją dbanie o czystość chwilowego kodu. 
Trzeba mieć naprawdę nadmiar wolnego czasu by tak postępować. Kod 
którego nikt nigdy nie zobaczy bo zniknie po paru minutach egzystencji, 
przy takim postępowaniu rozpościera się na dni pracy.

>> 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
> 
> I my mamy zgadywać?

Po co? Ale ... o co chodzi? Dlaczego potrzebujesz mieć ściśle 
zdefiniowaną funkcjonalność tej metody? Załóżmy, że kosi trawnik.

Ona po prostu tam jest. Załóż, że nic nie zwraca a my chcemy ją tylko 
wywołać z parametrem jakimś (np. wartość int). Tymczasem wstrzyknięcie 
serwisu do metody blokuje możliwość przekazanie parametru do niej, bo 
spodziewa się MarekService, a nie int'a.

> Bardzo prosto, zaglądasz do źródeł. getFlash() to jest helper:
> 
> https://github.com/symfony/symfony/blob/4.0/src/Symfony/Bundle/FrameworkBundle/Templating/Helper/SessionHelper.php#L45
> 

Ale tam też nie ma addFash(), o który pytam :-(
Zresztą nawet jeśli byłby tam on, to dowiadywanie się o istnieniu (w 
dodatku powszechnie stosowanych) funkcji/metod poprzez analizę źródeł 
zamiast szybkiego dowiedzenia się w dokumentacji, jest lekko dziwne...

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