PHP/Open Power Template: Różnice pomiędzy wersjami
Usunięta treść Dodana treść
m poprawka nawigacji |
rozpoczęcie prac nad przebudową i gruntowną aktualizacją |
||
Linia 1:
{{prognaw|PHP|[[../Savant/]]|[[../PHPTAL/]]}}
== Open Power Template ==
Omówiony w poprzednim rozdziale Savant to doskonały przykład biblioteki wykorzystującej PHP jako język szablonów. W Open Power Template sytuacja odwraca się o 180 stopni. Ten system udostępnia swój własny, XML-owy język, którego cechą szczególną jest deklaratywne podejście do tworzenia szablonów. Zamiast skupiać się na szczegółach implementacyjnych, twórca szablonu powinien jedynie powiedzieć, co chce osiągnąć i zlecić kompilatorowi wygenerowanie odpowiedniego kodu, który spełni jego życzenia. Pomaga w tym rozumienie struktury HTML szablonu oraz unikalna cecha, tzw. ''formaty danych''. Aby nie być gołosłownym, zaprezentujemy poniżej przykładowy szablon:
<source lang="xml" line><?xml version="1.0" ?>
<opt:root>
<opt:prolog />
<opt:dtd template="html5" />
<html>
<head>
<title>
</head>
<body>
<p>Polecamy nasze produkty:</p>
<ul>
<li opt:section name="products"><a parse:href="$products.url">{$products.name}</a></li>
</ul>
</body>
</html
</opt:root>
</source>
Oprócz tego, Open Power Template udostępnia obiektowy interfejs programistyczny dla PHP 5.2/5.3 dostosowany do potrzeb integracji z popularnymi frameworkami, które niebawem poznamy. Do naszej dyspozycji są trzy najważniejsze elementy interfejsu:
# '''Opt_Class''' - główna klasa zarządzająca konfiguracją.
# '''Opt_View''' - klasa reprezentująca tzw. ''widok'', czyli określony szablon i towarzyszące mu dane ze skryptu:
# '''Opt_Output_Interface''' - interfejs systemu wyjścia, który mówi, gdzie wysłać wygenerowany kod.
Podobnie jak w naszym prostym systemie edukacyjnym, nasza aplikacja WWW tworzy sobie odpowiednią liczbą widoków i przekazuje do nich dane. Jednak zamiast wykonywać je od razu, przekazuje je do jednego z systemów wyjścia, który zajmuje się wykonaniem szablonu i wysłaniem wyniku w określone miejsce. Przykładowo, jeśli skorzystamy z systemu wyjścia '''Opt_Output_Http''', dane polecą do przeglądarki, a oprócz tego możemy też stworzyć sobie system wyjścia '''Email''', który podany szablon potraktuje jako np. treść wiadomości e-mail, którą trzeba wysłać pod określony adres.
=== Instalacja ===
Bibliotekę można pobrać ze strony [http://www.invenzzia.org www.invenzzia.org] - pobieramy najnowsze wydanie z gałęzi 2.0.x, które jest omówione w tym podręczniku. W ściągniętym archiwum znajdziemy katalog <code>/lib</code> z właściwym kodem źródłowym biblioteki. Pozostałe katalogi to przykłady, dokumentacja oraz testy. Przenosimy wspomniany katalog gdzieś do drzewa katalogowego naszej aplikacji WWW.
Druga czynność to stworzenie folderów na szablony. Pierwszy z nich nazwijmy <code>/templates</code> - będą tam źródłowe wersje szablonów. W drugim, <code>/templates_c</code> Open Power Template będzie zapisywać skompilowane wersje, dlatego upewnijmy się, że PHP posiada do niego prawa zapisu.
Open Power Template jest częścią większej rodziny bibliotek ''Open Power Libs'', dla których potrzeb opracowane zostało wspólne mikrojądro oferujące m.in. automatyczną ładowarkę czy system obsługi błędów. Znajdziemy je w katalogu <code>/lib/Opl</code>, podczas gdy właściwy kod systemu szablonów będzie w <code>/lib/Opt</code>. Gdybyśmy chcieli użyć w przyszłości innych bibliotek z tej rodziny, wystarczy wgrać je tuż obok, gdyż będą one korzystać z tego samego jądra.
Kolejna rzecz to ustawienie automatycznej ładowarki:
<source lang="php" line><?php
require('/sciezka/do/opl/Opl/Base.php');
Opl_Loader::setDirectory('/sciezka/do/opl/');
Opl_Loader::register();
</source>
Autoloader OPL ma charakter uniwersalny, tzn. można go także wykorzystać do ładowania innych bibliotek z kompatybilnym schematem nazewnictwa (np. ''Doctrine''), aczkolwiek powyższy sposób jest dobry jedynie dla bibliotek OPL. Poniżej jest przedstawione bardziej uniwersalne podejście:
<source lang="php" line><?php
require('/sciezka/do/bibliotek/Opl/Base.php');
Opl_Loader::addLibrary('Opl', array('basePath' => '/sciezka/do/bibliotek/'));
Opl_Loader::addLibrary('Opt', array('basePath' => '/sciezka/do/bibliotek/'));
Opl_Loader::addLibrary('InnaBiblioteka', array('basePath' => '/sciezka/do/bibliotek/', 'handler' => null));
Opl_Loader::register();
</source>
Opcja ''handler'' ustawiona na '''null''' pozwala wyłączyć dodatkowe opcje ładowania klas specyficzne dla OPL-a, które mogą nie znaleźć zastosowania przy innych bibliotekach. I to wszystko. Jeśli poustawialiśmy dobrze ścieżki, możemy już zacząć korzystać z OPT.
=== Pierwszy szablon ===
=== Sekcje ===
===
=== Zarządzanie kodem HTML ===
===
=== Komponenty ===
=== Zakończenie ===
|