Open Power Template

Z Wikipedii

Skocz do: nawigacji, szukaj

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.

[edytuj] Linki zewnętrzne

Utwórz książkę
W innych językach