Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ Systemy szablonów _ Twig - opinie

Napisany przez: skowron-line 3.02.2013, 18:21:47

Chciałbym poznać wasze opinie o Twigu, plusy, minusy.

Napisany przez: !*! 3.02.2013, 18:29:06

http://forum.php.pl/index.php?showtopic=181145 wink.gif

+ dobrze że powstał
- brak, ponieważ jak już muszę korzystać z systemu szablonów, to wolę to zrobić po swojemu, niż pod czyjąś (czasami złą) wizje świata.

Napisany przez: wookieb 3.02.2013, 21:38:25

Jak przeczytałem posty z podlinkowanego wyżej tematu, to jestem przerażony jak można zhejtować tak dobry projekt bez podawania żadnych argumentów.

Chętnie odświeżyłbym ten temat.

Plusy Twig-s:
+ przyjemna składnia
+ IDE dobrze go wspierają
+ dziedziczenia szablonów
+ bloki
+ szybki
+ ciągle rozwijany!
+ pójdzie Ci prawie na każdym hostingu
+ czytelny dla ludzi nie kodujących w php (webdeveloperzy z firmy bez problemu dali sobie z nim rade)
+ nie musisz się martwić czy przekazana do szablonu dana to tablica czy obiekt - odwołujesz się do właściwości w ten sam BARDZO wygodny sposób
+ przyspiesza Twoją prace - a to jest najważniejsze.

Oczywiście, stracisz na tym jakieś milisekundy czasu generowanie szablonów. Nawet jeżeli będzie to 50 ms to i tak jest to ogromnie duży kop dla procesu developingu.
Jak kogoś boli te marne ms do opóźnienia to odsyłam do cache za pomocą ESI + varnish - odzyskają ten "cenny" czas.

A teraz dla kontrastu... dlaczego szablony w php są złe
- bardzo mało czytelny
- wymaga odpowiedniej konfiguracji serwera aby darować sobie konieczność pisania "<?php"
- kontrola typów na każdym etapie (sprawdzenie czy zmienna jest iterowalna aby podać ją do foreacha, utrudnienia refactoringu)
- wymaga napisania masy helperów + systemu do sensownego ich uruchamiania beż mozolnego wklepywania serii $this->myHelper( bla bla ) (psuje czytelność)
- życzę powodzenia przy próbie implementacji dziedziczenia szablonów

Napisany przez: everth 3.02.2013, 21:47:34

Cytat
życzę powodzenia przy próbie implementacji dziedziczenia szablonów

Ten punkt też tyczy się Twiga?

Napisany przez: wookieb 3.02.2013, 21:50:15

Twig już to ma

Napisany przez: pyro 3.02.2013, 22:11:08

Cytat(wookieb @ 3.02.2013, 21:38:25 ) *
Jak przeczytałem posty z podlinkowanego wyżej tematu, to jestem przerażony jak można zhejtować tak dobry projekt bez podawania żadnych argumentów.


Temat jest z 2011 roku i wtedy wersja systemu była dużo niższa, więc i pewnie gorsza

Osobiście jestem fanem Twig, jak dla mnie chyba najlepszy system szablonów pod PHP jaki znam (chociaż nie znam ich dużo, bo po co). Moje argumenty właściwie pokrywają się z argumentami @wookieb, dodatkowo:
+ Łatwo dopisywać swoje filtry / funkcje / rozszerzenia
+ Makra. Dzięki nim bawiłem się w "programowanie obiektowe w HTML" rolleyes.gif
+ Rosnąca popularność
+ Zastosowanie jako podstawowy system szablonów w popularnym frameworku PHP - Symfony
+ Webdesignerek jest więcej niż programistek, więc może jak dasz do renderowania jakiś ładny kod, to coś wyrwiesz na Twiga? smile.gif

Do minusów stosowania szablonów PHP nie ma co się dalej dopisywać, bo można by długo.

// ADD

Cytat(wookieb @ 3.02.2013, 21:38:25 ) *
+ pójdzie Ci prawie na każdym hostingu


Czemu "prawie"? Pójdzie na każdym hostingu, no chyba że taki hosting ma jakąś przestarzałą wersję PHP, ale wtedy nie warto brać takiego hostingu pod uwagę, bo i pewnie na ataki podatny.

Napisany przez: thek 3.02.2013, 22:24:27

Ja, mimo czasu jaki minął od wspomnianego tematu - podtrzymuję swoje tezy, choć z racji pracy mam ostatnimi czasy z twigiem wiele do czynienia. Każdy kto ma do wykombinowania w S2 coś mniej trywialnego, może szykować sobie od razu pistolet wink.gif Przykład? Miałem niedawno do ogarnięcia formularz, który nakładał na siebie relację 1 do wielu z relacją wiele do wielu z parametrem jako element dynamiczny formularza. Relacja 1 do wielu była zależna od jednego z pól formularza, zaś wiele do wielu z parametrem musiała się dynamicznie do niej dostosowywać, a by było wesoło, wybór pwego decydującego elementu nie mógł być zapamiętany od razu do encji, gdyż mógł zniszzyć isniejącą już relację. Twig głupiał, zaś samo S2 miało problemy z ogarnięciem walidacji tego. Event listenery w połączeniu z customowymi form_themes z danymi dodatkowymi rzucanymi przez includowanie podszablonów z parametrami. A by jeszcze było na złość, to niektóre elementy nie mogły mieć zgodnego z innymi wyświetlania, czylipwne elementy dziedziczyły po globalnych customowych form_themes, a inne nie. Zgranie tego do kupy to był horror. O takich drobiazgach jak fakt, że tworzenie customowych form themes w postaci mocno zaawansowanej w sieci jest tyle co kot napłakał - nie piszę. Gdy przychodzi co do czego, to musisz cały kod odpowiedzialny za daną funkcjonalność analizować i rozgryzać. Przykład? Jak twig przyjmuje pary klucz wartość, gdy musi je obliczyć dynamicznie lub przykładowo klucz jest obiektem, z którego wybieramy jedną z własności? Ja się z tym zderzyłem dla generowania path smile.gif

Kod
path( route_name, { argument.here_name: argument.here_value } )

Takie coś sypnie wam exceptionem o nieoczekiwanej kropce, ponieważ twig nie przyjmuje jako klucza czegokolwiek innego niż bezpośrednio string. Ja grzebiąc w bebechach i niejedną stronę przejrzawszy w końcu znalazłem obejście. Trzeba w twigu wymusić wykonanie tego działania poprzez ujęcie w nawiasy okrągłe:
Kod
path( route_name, { (argument.here_name): argument.here_value } )

Ale ile osób w twigu pracujących z takim czymś się spotkała? Nie sądzę by wielu, bo inaczej w google odpowiedź byłaby od razu do znalezienia. A im głębiej w las, tym więcej drzew...

EDIT: Żeby nie było, że hejt sam... Uważam i tak twig za prawdopodobnie najmilszy w użytkowaniu system szablonów dla php, aczkolwiek nie do końca zgodzę się z punktem o wspieraniu przez IDE. Bardziej zagnieżdżone konstrukcje powodują przykładowo w NetBeans "głupienie klamerek". Gdy jest odwołanie do odwołania bądź zagnieżdżona tablica, to podpowiadanie składni siada i zwyczajnie jest ono niepoprawne, ale to już błąd IDE, a nie samego twiga

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)