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();
?>



