Napisałem coś takiego:
<?php /** * Prosty system szablonów php * @copyright Copyright (c) Strzalek 2005 * @author Strzalek <strzalek@vp.pl> * @version 1.0.0 * @package Template */ class Template { /** * Ścieżka szablnów * @var string */ public $templateDir = './templates/'; /** * Przechowywuje zmienne wykorzystywane * w szablonach * @var array */ /** * Dołączenie wartości * @param string $key Nazwa * @param mixed $value Wartość * @return void */ public function assign($key, $value){ $this -> _vars[$key] = $value; } /** * Dołączenie wartości przez referencje * @param string $key Nazwa * @param mixed $value Wartość * @return void */ public function assignByRef($key, &$value){ $this -> _vars[$key] =& $value; } /** * Wyświetla plik szablonu * @see Template::fetch(); * @param string $file Nazwa pliku * @return void */ public function display($file){ } /** * Zwraca wartość szablonu * @throws TemplateException * @param string $file Nazwa pliku * @return mixed */ public function fetch($file){ $filePath = $this -> templateDir.$file; include($filePath); } throw new TemplateException('Błąd przy generowaniu szablonu'); return false; } } class TemplateException extends Exception { } ?>
Barodz prosta klasa, którą używa się tak:
<?php try{ $tpl = new Template(); $tpl -> assign('title', 'Testowy tytuł');
//to można oczywiście pobrać z bazy ;) ); $tpl -> assign('allNews', $allNews); $tpl -> display('index.tpl'); }catch(TemplateException $e){ } ?>
a plik szablonu wygląda tak:
<html> <body> <?php foreach($allNews as $news): ?> <?php endforeach; ?> </body> </html>
To tyle. Ewentualne błędy, albo udogodnienia proszę zgłaszać.
Pozdrawiam.