Open Power Template
Z Wikipedii
Open Power Template to system szablonów stworzony w PHP5. Jego zadaniem jest separacja logiki aplikacji (najczęściej kod PHP) od warstwy prezentacyjnej (HTML). Biblioteka pobiera dane ze skryptu, a następnie umieszcza je w specjalnych szablonach z umieszczonymi znacznikami wskazującymi położenie danych. Dostępna jest na licencji Lesser GPL.
Spis treści |
[edytuj] Historia
OPT narodził się w listopadzie 2004 roku jako element projektu Open Power Board. Głównym celem przyświecającym jego powstaniu była chęć eliminacji niedogodności i niedociągnięć najpopularniejszego parsera dla PHP, Smarty. Wkrótce po rozpadzie zespołu, OPT pozostał jedyną dalej rozwijaną częścią projektu. Biblioteka spędziła półtora roku w fazie rozwojowej. W lipcu 2005 przepisany został całkowicie kompilator szablonów, aby dostosować go do nowych założeń. W listopadzie los ten spotkał całą bibliotekę. Pierwsze stabilne wydanie, oznaczone numerem 1.0.0, ukazało się 2 sierpnia 2006 roku.
[edytuj] Możliwości
OPT, podobnie jak Smarty, udostępnia w szablonach pełen pakiet konstrukcji programistycznych takich, jak pętle czy instrukcje warunkowe, jednak pełnią w nim one rolę drugorzędną. O wiele ważniejsze są instrukcje wysokopoziomowe, których zadaniem jest ograniczenie programowania po stronie szablonów do absolutnego minimum. Najnowsza wersja, 1.1.0, oferuje:
- Wsparcie dla renderowania hierarchicznych drzew
- Integrację z systemami i18n oraz stronicowania
- Mechanizm cache
- Obsługę nagłówków HTTP
- Możliwość rozszerzania OPT o nowe instrukcje, m.in. poprzez mechanizm pluginów.
Składnia szablonów OPT może być dostosowana przez programistę. Domyślnie jest ona zbliżona do rozwiązań stosowanych w Smarty'm (nawiasy klamrowe do ograniczania znaczników), lecz posiada również tryb kompatybilności z XML.
Przetwarzanie szablonów w OPT polega na skompilowaniu szablonu do postaci kodu PHP i zapisaniu go na twardym dysku w celu późniejszego wykorzystania, co gwarantuje wysoką wydajność nawet przy złożonych szablonach. Kompilator działa w oparciu o rozwiązania spotykane w przetwarzaniu dokumentów XML - na podstawie szablonu tworzone jest drzewo węzłów reprezentujących poszczególne znaczniki oraz statyczny tekst. Procesory poszczególnych instrukcji mogą dowolnie nim manipulować oraz produkować z wybranych przez siebie fragmentów wynikowy kod PHP.
[edytuj] Przykładowa aplikacja
Oto przykładowa aplikacja generująca wynik z użyciem Open Power Template z włączoną kompatybilnością XML:
<table width="60%"> <tr> <td width="30"><b>#</b></td> <td width="20%"><b>Nazwa</b></td> <td width="*"><b>Opis</b></td> </tr> <opt:section name="products"> <tr> <td width="30">{$products.id}</td> <td width="20%">{$products.name}</td> <td width="*">{$products.description}</td> </tr> </opt:section> </table>
Kod PHP:
<?php define('OPT_DIR', '../lib/'); require('../lib/opt.class.php'); try { $tpl = new optClass; $tpl -> root = './templates/'; $tpl -> compile = './templates_c/'; $tpl -> gzipCompression = 1; // uaktywnij kompatybilnosc z XML $tpl -> xmlsyntaxMode = 1; // uaktywnij sztywna skladnie dla instrukcji $tpl -> strictSyntax = 1; $tpl -> httpHeaders(OPT_HTML); require('db_connect.php'); $r = mysql_query('SELECT id, name, description FROM products ORDER BY id'); $list = array(); while($row = mysql_fetch_row($r)) { // dodaj do listy kolejny element $list[] = array( 'id' => $row[0], 'name' => $row[1], 'description' => $row[2] ); } // przekaz liste parserowi OPT $tpl -> assign('products', $list); // przetworz szablon i wyslij wynik do przegladarki $tpl -> parse('example11.tpl'); mysql_close(); } catch(optException $exception) { optErrorHandler($exception); } ?>
[edytuj] Status projektu
2 sierpnia 2006 roku, po półtorarocznej pracy i testach ukazała się pierwsza stabilna wersja oznaczona numerem 1.0.0. Wersje 1.0.1 i 1.0.2 ukazały się w cyklu miesięcznym. 14 stycznia 2007 roku opublikowano wersję 1.1.0. Projekt posiada kompletną dokumentację w języku angielskim.

