Open Power Template

Z Wikipedii, wolnej encyklopedii
Open Power Template
Autor Invenzzia Group [martwy link]
Pierwsze wydanie 1.0.0 – 2006-08-02 2 sierpnia 2006(dts)
Aktualna wersja stabilna 2.0.6 – 3 września 2010; ponad 13 lat temu
Aktualna wersja testowa 2.1-beta1 – 3 września 2010; ponad 13 lat temu
Platforma sprzętowa wieloplatformowa
Rodzaj System szablonów
Licencja BSD
Strona internetowa

Open Power Templatesystem szablonów stworzony w PHP5. W aplikacjach internetowych powszechnie wykorzystywane jest oddzielenie logiki aplikacji (przetwarzanie danych) od warstwy prezentacyjnej, odpowiedzialnej za wyświetlanie wyników. Biblioteka dostarcza mechanizm do realizacji tego zadania. Warstwa prezentacji reprezentowana jest przez specjalne pliki zwane szablonami, zawierające kod HTML oraz dodatkowe instrukcje kontrolujące osadzanie w nim danych wygenerowanych przez aplikację.

Open Power Template wykorzystuje do tworzenia szablonów specjalny język programowania oparty na XML. Jest to rodzaj języka dziedzinowego – został zaprojektowany specjalnie do rozwiązywania i upraszczania typowych problemów związanych z tworzeniem szablonów przy pomocy zestawu deklaratywnych instrukcji. Zamiast dokładnie opisywać i implementować konkretny algorytm dla danego problemu, jak to ma miejsce w językach imperatywnych (np. PHP), twórca szablonu określa przede wszystkim spodziewany efekt oraz jego właściwości. Ma to na celu zmniejszenie kosztów oraz nakładu pracy niezbędnego do stworzenia i późniejszego utrzymania oprogramowania.

Biblioteka dostarcza obiektowego API wzorowanego na rozwiązaniach z popularnych frameworków. Ponieważ jest ona pierwszym elementem większego projektu, Open Power Libs, zbudowana została w oparciu o niewielkie jądro OPL zapewniające podstawową, wspólną funkcjonalność.

Historia[edytuj | edytuj kod]

Open Power Template powstał w listopadzie 2004 roku jako wzorowany na Smartym system szablonów dla projektu forum dyskusyjnego. Z powodu upadku macierzystego projektu, biblioteka usamodzielniła się i była rozwijana niezależnie, korzystając z odziedziczonej infrastruktury sieciowej. W sierpniu 2006 roku ukazała się pierwsza stabilna wersja oznaczona numerem 1.0.0. Charakteryzowała się ona składnią podobną do Smarty oraz niewielkim zestawem deklaratywnych instrukcji.

W styczniu 2007 została wydana wersja 1.1.0, która wprowadziła m.in. wsparcie dla systemów stronicowania oraz renderowanie drzew. Rok później twórcy projektu tworzą open-source’ową grupę programistyczną Invenzzia, której celem jest dalszy rozwój tego i innych projektów wolnego oprogramowania. Mniej więcej w tym samym czasie rozpoczynają się prace nad wersją 2.0.

Ostatnia wersja z gałęzi 1.1 została wydana w maju 2008 roku, a wszystkie wysiłki zostały skierowane na ukończenie gałęzi 2.0. Weszła ona w fazę beta-testów w grudniu tego samego roku, a pierwsza stabilna wersja ukazała się w lipcu 2009.

Cechy[edytuj | edytuj kod]

Język szablonów Open Power Template’a 2.0 to aplikacja XML, w związku z czym umożliwia on wykonywanie zaawansowanych manipulacji na kodzie XHTML. Pozostałe cechy i możliwości obejmują:

  1. Dziedziczenie szablonów i inne techniki modularyzacji szablonów.
  2. Wsparcie dla wyświetlania formularzy internetowych.
  3. Abstrakcyjne, niezależne od implementacji generatory list (sekcje)
  4. Automatyczne filtrowanie przeciwko atakom XSS.
  5. Wsparcie dla wielojęzyczności.
  6. Instrukcje do manipulacji XML-em.
  7. Obsługa programowania imperatywnego: pętle i instrukcje warunkowe.
  8. Język wyrażeń zoptymalizowany pod kątem XML-a i dostarczający dodatkową warstwę abstrakcji uniezależniającą szablony od szczegółów implementacyjnych aplikacji.

Wbudowany parser XML może być przekonfigurowany do przetwarzania również dokumentów HTML oraz zwykłych plików tekstowych.

Przykładowy kod[edytuj | edytuj kod]

Ponieważ szablony są niezależne od logiki aplikacji, niezbędne jest stworzenie przynajmniej dwóch plików. Pierwszy z nich zawiera kod prezentacyjny w XML-u:

<?xml version="1.0" ?>
<opt:root escaping="yes">
  <opt:prolog version="1.0" />
  <opt:dtd template="xhtml10transitional" />
  <html>
    <head>
      <title>{$pageTitle}</title>
      <meta http-equiv="content-type" content="text/html; charset=utf-8" />
    </head>
    <body>
      <p>{$introduction}</p>

      <!-- wyswietl liste -->
      <opt:show name="list">
      <ol>
        <li opt:section="list">{$list.item}</li>
      </ol>
      </opt:show>
    </body>
  </html>
</opt:root>

Drugi plik generuje dane dla szablonu oraz konfiguruje bibliotekę:

require('./libs/Opl/Base.php');
Opl_Loader::setDirectory('./libs/');
Opl_Loader::register();

$tpl = new Opt_Class;
$tpl->sourceDir = './templates/';
$tpl->compileDir = './templates_c/';
$tpl->setup();

$view = new Opt_View('szablon.tpl');

// Przypisz dane do szablonu
$view->pageTitle = 'Przykładowa strona OPT';
$view->introduction = 'Przykładowy tekst';
$view->list = array(0 =>
  array('item' => 'Element 1'),
  array('item' => 'Element 2'),
  array('item' => 'Element 3')
);
$view->setFormat('list', 'Array');

$output = new Opt_Output_Http;
$output->render($view);

Linki zewnętrzne[edytuj | edytuj kod]