Prev |  | Next

## interface `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.

#### Tip

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

### Multiple post filters

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

Prev | Up | Next
PHPTAL DOM | Home | interface `PHPTAL_Trigger`