PHPTAL_Filter
This interface allows you to create filters for processing result of template execution. Post filters are set using
setPostFilter()
method.
Post filters are invoked after each template execution.
If your filter is slow, try using pre filter instead, which is executed only once before template is compiled.
Result of template processing (with values of all variables and no TAL markup) will be passed to your filter's
filter()
method:
<?php
class MyPreFilter implements PhpTal\Tal\FilterInterface {
public function filter($source){
return $source;
}
}
class MyPostFilter implements PhpTal\Tal\FilterInterface {
public function filter($xhtml){
return $xhtml;
}
}
$tpl = new PhpTal\PHPTAL('mytemplate.xhtml');
$tpl->setPostFilter(new MyPostFilter());
echo $tpl->execute();
?>
You can set only one post filter using
setPostFilter()
. If you have more than one filter to chain, you can wrap them into a single class, implementing the
PHPTAL_Filter
interface, which would invoke the filter's chain.
<?php
class FilterChain implements PhpTal\Tal\FilterInterface {
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\PHPTAL('mytemplate.xhtml');
$tpl->setPostFilter($myFilter);
echo $tpl->execute();
?>