PHP Savant
Po dłuższej przygodzie ze Smarty oraz krótszej z OPT spróbowałem Savant. Jest to system szablonów oparty o natywne PHP, a nie dodatkowy język szablonów, który byłby "kompilowany" do PHP. Moja notka zbiegła się akurat z nową wersją strony Savant i przejęciem projektu przez Brett Bieber o czym można przeczytać na blogu twórcy Savant - Paul M. Jones.
Do zapoznania się z Savant skłoniła mnie powolna śmierć Smarty, które jak wiemy napisane jest w PHP4. Na forum Smarty nie widać zupełnie ruchu w kierunku prac nad wersją 3. Projekt ten wyleciał nawet ostatnio z subdomeny smarty.php.net (aktualnie smarty.net). Próbowałem także system OPT, o którym pisałem zresztą na blogu, ale niestety projekt ten nie idzie w tym kierunku, który ja bym oczekiwał, czyli prostoty.
Savant to przede wszystkim dobrze napisane oprogramowanie, ładny obiektowy kod w PHP5, a do tego jest mały i prosty, żadna kobyła. Zawiera wszystko co potrzeba i nic więcej. Jest system wtyczek, filtrów oraz obsługa błędów. Niestety dokumentacja jest tylko do wersji 2, której nie powinniśmy już używać, ale na jej bazie możemy bardzo szybko nauczyć się jak używać wersji 3, a resztę doczytać z dokumentacji API.
Na początku dość trudno się przyzwyczaić do pisania ciągłych znaczników otwierających i zamykających kod PHP. Na pewno jest to trochę mniej przejrzyste i na pierwszy rzut oka wygląda jak sieczka (przykład poniżej) :) Natomiast bardzo podoba mi się pisanie wtyczek bo każda z nich to klasa, a to pozwala nam zadbać o piękniejszy kod.
W tym wpisie specjalnie nie poruszam kwestii, czy Savant, który używa wyłącznie PHP jest lepszy od Smarty. Pozostawiam to do następnego wpisu, w którym opiszę wady, zalety oraz nastawienie społeczności polskiej i zagranicznej do tego dylematu.
Słowa kluczowe: PHP, Szablony, Techblog, opt, savant, smarty, system, szablony, artykuł, blog

Komentarze i opinie
Szkoda, że nie pokazałeś nawet kawałka kodu takiego szablonu.
Zawsze możesz pisać skrócone php (jak to robiłem korzystając z CodeIgnitera):
<?=$zmienna ?>
To sobie 'echowało' zmienną w szablonie :)
@JoShiMa: dodany
@irv, tylko że to jest short tag, który jest często wyłączony z różnych względów. Też kiedyś tak pisałem w szablonach ZF, ale pewnego dnia przekonałem się że nie jest to za dobra praktyka.
ot normalny widok z FW ;) czyli zrobiłeś kółko i wróciłeś do najrozsądniejszej metody ;)
co do shortów: czy czasem w php6 nie będą ustawione defaultowo na off? Coś mi się tak o uszy obiło i przestałem uzywać.
@nrm: za to z dużym bagażem doświadczeń ;)
short_open_tag nie jest zalecane już teraz (o czym możemy przeczytać w dokumentacji) i możliwe, że to w PHP6 usuną, też słyszałem o tym, ale jak ta historia się skończy to musimy jeszcze poczekać
A można wiedzieć, co takiego nie podobało ci się w OPT? :>
PHP sam swobie swietnie nadaje sie do szablonów. Nie wiem po co bawić sie w jakies zewnetrzne cuda, skoro niewiele sie to rozni od czystego kodu. Mnie to wyglada na koncepcje rodem z Zend Framework, czyli nic nowego a tylko powielenie dobrych wzorców. Dodam ze nie zaglebialem sie w szczególy tego projektu wiec moge pleść głupstwa
@Raven: Savant był przed ZF ;) Co najwyżej ZF mogło się wzorować na Savant :P
Szablony w PHP to sieczka - nijak da się to uczynić czytelnym dla programisty. Próbowałem przeróżnych sposobów wcięć, ale to wszystko wygląda okropicznie.
Już dawno przestałem przejmować się tym, że przy zmianie TPL'a trzeba go kompilować do PHP'a, co zabiera np. czas procesora. Mając na swojej stronie moduł cache'owania całych stron niczego się nie boję i wybieram wygodę programisty nad sieczkę w widoku.
@Albi: część opisałem w notce poświęconej OPT, link w tym artykule, a poza tym jest to zbyt rozbudowane, dlatego m.in. powstało smarty light, a OPT idzie w drugą stronę i jeszcze jest bardziej skomplikowane niż Smarty ( preferuję proste systemy ), do tego brak społeczności w okół projektu, tyle czasu minęło, a na forum praktycznie pustka, co za tym idzie system się słabo rozwija, za mało osób zgłasza uwagi
Prawda jest taka, ze czas szablonow byl dobry wowczas, kiedy zasadniczo ludzie piszacy w zgodzie z wzorcem MVC byli odszczepiencami, a projekt PHP skladal sie z mniej lub bardziej wymieszanej zupy z plikami HTML i PHP. Dzis, kiedy jakiekolwiek powazniejsze rzeczy opiera sie na frameworkach sensownosci uzywania szablonow po prostu nie widze - zasadniczo przeciez robia one to samo, co wystepuje w kazdym frameworku - zapisuje sie pobrane skads dane do wlasnosci obiektu widoku i wyswietla.
@sf: Savant był przed ZF ;) Co najwyżej ZF mogło się wzorować na Savant :P
Prawdopodobne - w końcu projekt prowadził P. M. Jones, który jest autorem również Solar Framework, praktycznie prekursora FW
System szablonów bez szablonów? O o.
A możę tak byś się zainteresował XSTL. Tylko żeby wynik był tworzony po stronie serwera a nie po stronie przeglądarki bo to dużo więcej czasu zajmuje. XSTL ma 1 pozorną wade. Trzeba się nauczyć/naumieć pozornie trudnego języka przekształceń no i trzeba sklecić jakąś klase do tworzenia pliku XML który będzie przygotowany pod XSTL
@chudy: zbyt skomplikowane, w niektórych przypadkach, za duże koszty by taki system wprowadzać
Stormfly, chciałbym rozdzielić dwie rzeczy:
- Skomplikowanie kodu biblioteki
- Skomplikowanie szablonów
Akurat w przypadku OPT tyle kodu jest potrzebne, paradoksalnie, by uprościć szablony, wyeliminować z nich konieczność programowania w stopniu maksymalnym i zniwelować idiotyzmy PHP (tak, 30 kb kodu parsera wyrażeń powstało głównie po to, byś zamiast "Parse error" mógł ujrzeć ładnie sformatowany komunikat wyjątku). Główna klasa, czyli to, co ładujesz na co dzień, jest natomiast coraz bardziej redukowana. Mi do tworzenia w pełni funkcjonalnych szablonów w OPT wystarcza znajomość 5 (słownie PIĘCIU) elementów składni oraz wiedza o tym, jak przypisywać dane do szablonu i go parsować. Tyle.
Co do społeczności -> sugerujesz, że ilość osób na forum wpływa na to, czy dziś napiszę 1 czy 10 kb kodu do OPT? Pisanie na forum to suwerenny wybór każdego człowieka - ty też w końcu nie wysłałeś mi swoich uwag i przemyśleń właśnie tam, tylko przez przypadek trafiłem na nie na Twoim blogu.
@Zyx: jako autor biblioteki będziesz jej bronił, ale z moich obserwacji wynika, że OPT nie zdobyło popularności i nic nie zanosi się na to by to się zmieniło
im więcej postów, tym więcej uwag do systemu, tym większa presja osób, które chcą ulepszeń dotyczących systemu, brak postów to brak zainteresowania projektem, czyli prawie nikomu na tym nie zależy, zresztą to też mnie zniechęciło, bo się potem jak może pamiętasz zarejestrowałem na forum i parę tematów napisałem, ale odzew był tylko od Ciebie, żaden inny niezależny programista się nie wypowiedział...
Potwierdzam, opt jakos nie przyjmuje sie i mi tez sie nie widzial jak go zobaczylem. Zreszta jest powiazany z od lat tworzonym opb, ktorego efektow nie widac, a to reklama dobra nie jest.
Z kolei savant wyglada tak, jakby go tam nie bylo - tworzac wlasny kod uzyskujemy cos bardzo podobnego, a nie o to chodzilo.
Wg mnie szablon powinien byc ladnie parsowany jako czysty html, zeby mozna go bylo edytowac jak czlowiek, a nie tylko po stronie serwera widziec jak wyglada.
Smarty zle nie jest, chociaz to kombajn... PHP4 nikomu nie szkodzi, o ile dziala w PHP5, a smarty afair dziala.
Podsumowujac, idealnego rozwiazania brak i daleko tym projektom do bycia tak przystepnym jak same fcje zaimplementowane w PHP.
Moim zdaniem przyczyna tkwi w samych Polakach, a mój błąd był taki, że ich posłuchałem i w pierwszej kolejności postawiłem na polskojęzyczne materiały, tym samym całkowicie zamykając się na użytkowników zagranicznych. Jak ktoś chce szczegółowych zarzutów, niedawno pisałem o nich u siebie. W każdym razie ciężko jest znaleźć polski projekt, który zdołał wokół siebie zgromadzić i utrzymać polską społeczność.
Chris -> nie widać efektów OpenPB, bo ten projekt został dawno temu zamknięty, właśnie z powodu tego, że próbowali go zrobić Polacy. OPT od dłuższego już czasu jest całkowicie niezależnym projektem.
@Zyx: z tego co ja pamiętam to na samym początku OPT miało pełną dokumentację tylko po angielsku, pamiętam też, że pojawiały się za granicą w komentarzach gdzie tylko poruszano temat szablonów linki do OPT i jakoś nikt nie pokusił się za granicą by napisać o tym systemie. Proponuje napisać do tych osób e-maile i poprosić o recenzje systemu na ich blogach skoro uważasz, że za granicą system by się przyjął.
Reszta w komentarzu Twojego posta.
Czy robił ktoś z Was coś w PHP SAVANT 3? Są jakieś ciekawe pluginy do symfony?
Trochę czasu minęło... I popatrzcie na OPTv2. To się nazywa porządny system szablonów.
Nowy komentarz