🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: Symfony 4 - ciągłe problemy z bundlami

#232351
From: Marek S
Date: Tue, 16 Apr 2019 21:19
107 lines
5887 bytes
W dniu 2019-04-16 o 17:43, Borys Pogoreło pisze:

> Wcale nie musisz ich używać. Ja jestem z tej połowy, która uważa je za
> bezsens.

Niestety w kursach jakie wykupiłem nie wspomniano o takiej opcji. :-(

>> - Nie ma potrzeby instalowania całości internetu by projekt działał.
>> Instalujemy skeleton i dociągamy tylko potrzebne rzeczy. W Laravelu 40MB
>> plików o prawie zerowej wielkości, mnie nie zachęca.
> 
> Bo taka jest idea tego frameworka. Większość rozwiązań dostarczać gotowe.

I właśnie ta idea mnie powaliła na kolana.

> Przygotowanie takiego samego boilerplate w Symfony to jest orka na
> początku.
> 

Hmmm... ja to widzę inaczej już teraz, na początku. Zaczynam projekt, 
potrzebuję np. doktryn, to je szybciutko dociągam. W PHPStorm to już w 
ogóle bajka bo CTRL+Shift+X potem S, potem doctr i enter. To nie jest 
orka lecz niezauważalna czynność obsługowa. Podobnie z innymi.

>> - W Laravelu nie potrafiłem zbudować strony renderowanej z wielu
>> kontrolerów z zapewnieniem funkcjonalności sekcji.
> 
> Jak dla mnie to musiałeś to wyjątkowo źle skonstruować, że miałeś takie
> problemy. Albo próbowałeś zbyt skomplikowane rzeczy tworzyć nie znając
> zasad rządzących tym narzędziem. To akurat nic złego, bo tak się też
> nauczysz, ale trochę za szybko odpuściłeś.

Możliwe. Powiem Ci, że konkretnie poległem na stronie z 2ma sekcjami po 
3 newsy, które miały możliwość przełączania na kolejne 3 w danej 
kolumnie. Założenie: zero Ajaxa. Zrobiłem więc w layoucie miejsce na 
nie. Do tego dwa dołączone includami z wstrzykniętymi serwisami 
generującymi dane do wyświetlenia. Kontrolerów nie da się wstrzykiwać w 
Laravelu. Kliknięcie "następne 3" odwoływało się do kontrolera danej 
sekcji, które był tylko po to by przekazać serwisowi informację o 
zdarzeniu i potem powrót do strony głównej.

W Symfonii to samo jest banalne: osadzam w layoucie metodę kontrolera, 
która renderuje mi blok newsów na podstawie jakiegoś twiga. Klikam 
"następne 3", gdzie znów odpala się jakaś metoda __TEGO SAMEGO__ 
kontrolera, robi swoje i wraca. Nie ma potrzeby rozbijania obsługi bloku 
newsów na 2 klasy: kontrolera i serwisu. Nie ma potrzeby (=jest wybór) 
includowania zewnętrznych sub-twigów, które dopiero osadzają serwis.

Jaka z tego konsekwencja? A no taka, że gdy klientowi odwidzi się jakiś 
blok w danej lokalizacji, to go zabieram z niej i pakuję w inne miejsce 
- bez programowania. Tzn. nie muszę przenosić obsługi serwisów do innych 
kontrolerów. Zmieniam tylko część wizualną.a soft zostaje.

Dla mnie bajka. Tak robiłem kiedyś w swoim własnym frameworku. Uznałem 
wtedy takie "graficzne" podejście za najbardziej wygodne przy realnej 
pracy z klientami.

> Poza tym, jak już Ci kiedyś pisałem - kontroler jest jeden. Za to dostawców
> usług albo repozytoriów możesz mieć ile chcesz.

Tak, pamiętam.

>> - Wreszcie w Symfony jest miejsce na programowanie obiektowe. W Laravelu
>> programowanie bardziej przypominało wypełnianie formularzy (template'ów
>> klas). To mi bardziej przypominało programowanie liniowe.
> 
> No to żeś znowu pojechał... Na pewno znasz definicję programowania
> obiektowego?

Czy to nie jest przypadkiem coś takiego jak dziedziczenie, polimorfizm, 
interfejsy? Być może nie znam. Przyjmijmy więc zatem, że uwielbiam 
używać "extends coś mojego", stosować abstrakcje czy final, mieć klasy o 
dowolnej zawartości, która mi odpowiada a nie framework narzuca. Laravel 
dawał mi fasady, z których korzystanie bardziej przypominało mi pracę 
urzędnika niż programisty. :-D

>> - W Symfony, automatycznie wygenerowane migracje zawierają SQL.
>> Popłakałem się ze szczęścia. Zero ORM'owego bełkotu, który wygeneruje
>> nie wiadomo co. W Laravelu na bazie trzeba było sprawdzać czy primary
>> key powstał jako 8-bitowy, czy może 4-ro. Czy został utworzony indeks.
>> Czy relacja się zawiązała i jakiego typu...
> 
> Przecież to wszystko masz zdefiniowane w migracjach. Nie rozumiem.

Ale jak zdefiniowane? Ja dostawałem coś takiego w nich:

     public function up()
     {
         Schema::create('flights', function (Blueprint $table) {
             $table->increments('id');
             $table->string('name');
             $table->string('airline');
             $table->timestamps();
         });
     }

Dla mnie to bełkot. To się półautomatycznie tworzyło.

> W każdej chwili możesz napisać DB::query().

I znów fasada... ech... SQL to tekst prosty, zwięzły, przejrzysty. komu 
on szkodzi, ze tak jest tępiony? Podoba mi się w Symfonii, że w 
doktrynach jest on natywnie stosowany.

-- 
Pozdrawiam,
Marek
Technical Details
Message-ID: <q95gsk$ki3$1@node2.news.atman.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!.POSTED!not-for-mail
References: <q8lni9$5fp$1@node2.news.atman.pl> <1h2gnc3g49803$.1p62azpj8m51m$.dlg@40tude.net> <q92vd3$arv$1@node2.news.atman.pl> <1lztali5n758t.1bkvqp4b7rdc1.dlg@40tude.net>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!.POSTED!not-for-mail
From: Marek S <precz@spamowi.com>
Newsgroups: pl.comp.lang.php
Subject: Re: Symfony 4 - ciągłe problemy z bundlami
Date: Tue, 16 Apr 2019 23:19:13 +0200
Organization: ATMAN - ATM S.A.
Lines: 107
Message-ID: <q95gsk$ki3$1@node2.news.atman.pl>
References: <q8lni9$5fp$1@node2.news.atman.pl> <1h2gnc3g49803$.1p62azpj8m51m$.dlg@40tude.net> <q92vd3$arv$1@node2.news.atman.pl> <1lztali5n758t.1bkvqp4b7rdc1.dlg@40tude.net>
NNTP-Posting-Host: 89-70-94-204.dynamic.chello.pl
Mime-Version: 1.0
X-Trace: node2.news.atman.pl 1555449556 21059 89.70.94.204 (16 Apr 2019 21:19:16 GMT)
X-Complaints-To: usenet@atman.pl
NNTP-Posting-Date: Tue, 16 Apr 2019 21:19:16 +0000 (UTC)
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.6.1
In-Reply-To: <1lztali5n758t.1bkvqp4b7rdc1.dlg@40tude.net>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit