Manual
3. Interfejs PHPTAL_Filter
Interfejs ten umożliwia stosowanie filtrów dla źródła szablonu (pre-filtr) lub wyniku po przetworzeniu (post-filtr).
Prefiltry wykonywane są przed przetworzeniem szablonu i nie będą wykonane dopóki plik źródłowy szablonu nie zostanie zmodyfikowany.
Postfiltry wykonywane są po każdym uruchomieniu szablonu.
<?php require_once 'PHPTAL.php'; class MyPreFilter implements PHPTAL_Filter { public function filter($source){ return $source; } } class MyPostFilter implements PHPTAL_Filter { public function filter($xhtml){ return $xhtml; } } $tpl = new PHPTAL('mytemplate.html'); $tpl->setPreFilter(new MyPreFilter()); $tpl->setPostFilter(new MyPostFilter()); echo $tpl->execute(); ?>
Możesz ustawić tylko jeden pre-Filtr i jeden post-Filtr poprzez metodę set*Filter. Jeśli użyć większej ilości filtrów możesz dodać je do pojedyńczej klasy implementującej interfejs PHPTAL_Filter, który uruchomi łańcuch filtrów.
<?php require_once 'PHPTAL.php'; class FilterChain implements PHPTAL_Filter { private $_filters = array(); public function add(PHPTAL_Filter $filter){ $this->_filters[] = $filter; } public function filter($source){ foreach ($this->_filters as $filter){ $source = $filter->filter($source); } return $source; } } $myfilter = new FilterChain(); $myfilter->add(new CommentFilter()); // imaginary filter $myfilter->add(new TidyFilter()); // imaginary filter $tpl = new PHPTAL('mytemplate.html'); $tpl->setPostFilter($myFilter); echo $tpl->execute(); ?>