PHP/Czym jest system szablonów?: Różnice pomiędzy wersjami

Z Wikibooks, biblioteki wolnych podręczników.
< PHP
Usunięta treść Dodana treść
poprawki stylistyczne, literówki itd
Update adresu witrny systemu szablonów smarty.
Linia 34: Linia 34:
Smarty posiada obiektową architekturę, ale ze względu na konieczność zachowania kompatybilności, jest skryptem pisanym i zoptymalizowanym głównie pod kątem należącego już do przeszłości PHP4. Wielu programistów zarzuca mu także zbytnie upodobnienie się do języka programowania oraz spychanie instrukcji automatyzujących złożone zadania na dalszy plan. Zastrzeżenia wysuwane są także pod adresem stylu nazewnictwa metod oraz samej składni szablonów, jednak jest to już jedynie kwestia gustu.
Smarty posiada obiektową architekturę, ale ze względu na konieczność zachowania kompatybilności, jest skryptem pisanym i zoptymalizowanym głównie pod kątem należącego już do przeszłości PHP4. Wielu programistów zarzuca mu także zbytnie upodobnienie się do języka programowania oraz spychanie instrukcji automatyzujących złożone zadania na dalszy plan. Zastrzeżenia wysuwane są także pod adresem stylu nazewnictwa metod oraz samej składni szablonów, jednak jest to już jedynie kwestia gustu.


Witryna Smarty: [http://smarty.php.net smarty.php.net]
Witryna Smarty: [http://smarty.net smarty.net]


==== Open Power Template ====
==== Open Power Template ====

Wersja z 14:26, 22 mar 2009

Poprzedni rozdział: Bazy danych - co dalej?
Następny rozdział: Smarty

Czym jest system szablonów?

Nastaje nowa era w dziejach. Koniec z umieszczaniem kodu HTML bezpośrednio w skryptach PHP. W tej części podręcznika zapoznasz się z systemami szablonów, które nie tylko pozwolą na odseparowanie tych dwóch elementów od siebie, ale również ułatwią wykonanie wielu dodatkowych zadań.

Idea systemu szablonów

Do tej pory wszystkie tworzone przez nas skrypty generowały zakodowany "na sztywno" w nich samych kod HTML. W przypadku większości zaprezentowanych tutaj przykładów nie stanowiło to zbyt dużego problemu, ale w większych projektach powstaje z tego powodu potężny zamęt. Gdyby przyszło nam wymieniać szatę graficzną, prawdopodobieństwo uszkodzenia jakiegoś algorytmu jest w takiej sytuacji spore.

System szablonów (ang. template engine albo templating engine) eliminuje tę niedogodność. Kod HTML jest przechowywany w osobnych, specjalnych plikach zwanych szablonami, w których odpowiednimi znacznikami oznaczone są miejsca, gdzie należy wstawić wyniki działania skryptu. Skrypt przetwarza dane, przekazuje je systemowi szablonów, a następnie wydaje polecenie przetworzenia żądanego szablonu. Parser ładuje szablon do pamięci, odnajduje w nim znaczniki, zamienia na dane ze skryptu, a rezultat wysyła do przeglądarki, gdzie internauta ogląda końcowy wynik. Wiele systemów szablonów nie poprzestaje na prostym osadzaniu danych - twórcy szablonów dostają do rąk zaawansowane narzędzia, niejednokrotnie o możliwościach normalnych języków programowania, a dodatkowe możliwości ułatwiają tworzenie np. list.

System szablonów to normalna biblioteka napisana w PHP. Niemal zawsze posiada ona zorientowane obiektowo API. Istnieje wiele gotowych oraz porządnych systemów szablonów. Część z przytoczonych poniżej zalet oraz wad jest domeną tylko niektórych z nich. W tym podręczniku omawiać będziemy tylko dwa systemy szablonów: Smarty oraz Open Power Template, na nich też poznamy praktyczne działanie tej kategorii skryptów.

Zalety

Zalety systemów szablonów:

  1. Porządek w kodzie - HTML oddzielony od PHP.
  2. Automatyzacja - wiele systemów szablonów udostępnia specjalne znaczniki, które w prosty sposób pozwalają zrealizować skomplikowane zadania.
  3. Inna filozofia pracy - niektóre rzeczy łatwiej jest zrobić za pomocą systemu szablonów (np. obsługa formularzy).
  4. System cache - zaawansowane systemy szablonów potrafią przechowywać w plikach cache generowane wyniki, co zmniejsza obciążenie serwera i umożliwia obsłużenie większego ruchu.
  5. Inna organizacja pracy aplikacji WWW - dzięki systemom szablonów, nietrudno jest zbudować skrypt, który najpierw przetworzy wszystkie niezbędne dane, a dopiero na samym końcu zajmie się generowaniem wyniku HTML. Przy okazji umożliwia to większą dynamiczność aplikacji. Zauważmy bowiem, że przy wymieszanym kodzie HTML i PHP to, co już wysłaliśmy, jest wysłane i w razie jakichś problemów musimy zaakceptować ten smutny fakt. W przypadku systemu szablonów wystarczy jedynie zmienić szablon.
  6. Webmaster nie musi znać PHP - w wielu firmach grafik oraz programista to dwaj zupełnie różni ludzie i nie jest wcale powiedziane, iż muszą oni znać nawzajem swoje profesje. Dla webmastera tworzącego kod HTML zawiłości PHP mogą być trudne do przeskoczenia. Warstwa abstrakcji w postaci systemu szablonów separuje go od tego, oddając w jego ręce łatwy do zrozumienia zestaw narzędzi.

Krytyka

Część programistów PHP (i nie tylko) krytykuje systemy szablonów. Najważniejsze z przedstawianych przez nich argumenty to:

  1. Najlepszym systemem szablonów jest sam PHP - część systemów szablonów, o dziwo, korzysta z tego argumentu w całkiem praktyczny sposób. Zamiast samodzielnie zajmować się obsługą pętli, zwyczajnie kompilują one szablony do postaci kodu PHP, a później wykonują prosty include.
  2. Mitem jest, że system szablonów ułatwia pracę webmasterom. Zamiast jednego języka programowania (PHP) dostajemy inny, tyle że o innej składni. - jest to smutna prawda dotycząca części systemów szablonów. Udostępniane przez nie instrukcje są jedynie kalką tradycyjnych pętli oraz konstrukcji z klasycznych języków programowania. W takim przypadku faktycznie - stosowanie systemów szablonów nie ma zbyt wielkiego sensu. Pamiętajmy jednak, że są pozytywne wyjątki mające szereg instrukcji ukrywających programowanie przed webmasterem.
  3. Systemy szablonów zmniejszają wydajność - dotyczy to tylko części systemów szablonów. Jak wspomnieliśmy wyżej, najwydajniejsze kompilują szablony do postaci kodu PHP, a przy kolejnych wejściach wywołują jedynie prosty include, uzyskując wydajność bardzo zbliżoną do zwykłego mieszania kodu HTML i PHP. Ponadto dużą rolę odgrywa tu odpowiednie z nich korzystanie. Nawet najlepszy parser, jeśli jest nieumiejętnie stosowany, może skutecznie "zarżnąć" serwer już przy małym obciążeniu.

Systemy, jakie poznamy

W podręczniku tym omówimy dwa systemy szablonów: Smarty oraz Open Power Template. Z pozoru opierają się na identycznym projekcie, ale w rzeczywistości prezentują nieco inne podejście do problemu szablonów. Zacznijmy od ich krótkiej charakterystyki.

Smarty

Smarty (TM) to jeden z najstarszych oraz bez wątpienia najpopularniejszy z dostępnych systemów szablonów, jego początki sięgają 2000 roku. Od tamtej pory przeszedł długą drogę, wzbogacony o nowe możliwości. Popularność oraz długa obecność sprawia dodatkowo, iż biblioteka jest bardzo stabilna i posiada bardzo małą liczbę błędów. Pomimo ogromnych możliwości, Smarty wygrywa wydajnościowo z wieloma mniej rozbudowanymi systemami szablonów. Dodatkowymi jego atutami są duża liczba materiałów pomocniczych (jego omówienie można znaleźć niemal w każdej bardziej zaawansowanej książce traktującej o PHP) oraz elastyczna architektura - łatwo rozszerzyć jego możliwości za pomocą rozszerzeń.

Smarty posiada obiektową architekturę, ale ze względu na konieczność zachowania kompatybilności, jest skryptem pisanym i zoptymalizowanym głównie pod kątem należącego już do przeszłości PHP4. Wielu programistów zarzuca mu także zbytnie upodobnienie się do języka programowania oraz spychanie instrukcji automatyzujących złożone zadania na dalszy plan. Zastrzeżenia wysuwane są także pod adresem stylu nazewnictwa metod oraz samej składni szablonów, jednak jest to już jedynie kwestia gustu.

Witryna Smarty: smarty.net

Open Power Template

Open Power Template to polski system szablonów zdobywający popularność głównie w naszym kraju. Jego początki datowane są na koniec 2004 roku, a obecny kształt przybrał na początku roku 2006. Jest on napisany oraz zoptymalizowany pod kątem PHP5 i nie działa na starszych wersjach. Głównym celem przyświecającym jego powstaniu było poprawienie i usunięcie wad systemu Smarty, stąd też pewna liczba podobieństw występujących między tymi systemami (najprostsze szablony mogą być bez żadnych zmian przetwarzane przez oba). W Open Power Template instrukcje typowe dla języków programowania mają jednak charakter drugoplanowy, a znacznie większy nacisk położony został na bardziej wysokopoziomowe instrukcje rugujące programowanie z szablonów. Wydajność tego systemu jest minimalnie wyższa niż w Smarty.

Open Power Template nie jest jednak tak popularny jak Smarty, co rzutuje na jakość dostępnych materiałów. Dokumentacja przechodzi okres poważnych zmian i natrafić można w niej na nieścisłości. Bardzo mało jest tekstów objaśniających wszystko krok po kroku, trudniej także uzyskać pomoc w przypadku napotkania problemów.

Open Power Template jest częścią większego projektu: Open Power Board. W jego ramach opracowywany jest także dodatek do OPT zwany Open Power Forms zajmujący się obsługą formularzy, zaawansowany system kontroli danych oraz wsparcie dla AJAX.

Witryna Open Power Template: opt.openpb.net