<?php ## Пример скрипта, использующего префильтр кода для шаблонов.
show_source(__FILE__); echo "<hr>";

require_once 
"../../lib/config.php";
require_once 
"PHP/CodeFilter.php";

// Если нужно, подключаем Debug_BacktraceDumper для
// улучшенного вывода отладочных сообщений PHP.
if (true) {
    require_once 
"Debug/BacktraceDumper.php";
    
Debug_BacktraceDumper::set_error_handler();
}

// Некоторая переменная с HTML-разметкой.
$test "<b>test</b>";

// Создаем объект-фильтр и настраиваем его параметры.
$filter = new PHP_CodeFilter();
$filter->addFilter('filter_phpOutputOperator');

// Запускаем включаемый файл (аналог include), но его 
// код перед выполнением обрабатывается префильтром.
$filter->includeFile('template.php');

// string filter_phpOutputOperator(string $code)
// Префильтр кода: заменяет операторы '< ?= ... ? >' 
// (без пробелов, конечно) на '< ?=htmlspecialchars(...)? >',
// что обеспечивает автоматический квотинг HTML в шаблонах
// и повышает безопасность скриптов.
function filter_phpOutputOperator($code)
{
    return 
preg_replace(
        
'/(<\?=) (.*?) (?: \s*;)* \s* (\? >)/sx'
        
'$1htmlspecialchars($2, ENT_QUOTES)$3'
        
$code
    
);
}
?>

Проверка htmlspecialchars-квотинга вывода:
(Должна быть выведена HTML-разметка, как после htmlspecialchars().)
<b>test</b>

Проверка использования неопределенной переменной:
(Должна быть ссылка на /home/dklab/domains/www/lib/PHP_CodeFilter/demo/test/PHP_CodeFilter/template.php.)

Проверка использования неопределенной переменной из другого файла:
(Должна быть ссылка на /home/dklab/domains/www/lib/PHP_CodeFilter/demo/test/PHP_CodeFilter/template2.php.)

Array
(
    [0] => Array
        (
            [file] => /home/dklab/domains/www/lib/PHP_CodeFilter/demo/test/PHP_CodeFilter/template2.php
            [line] => 12
            [function] => includefile
            [class] => php_codefilter
            [type] => ->
            [args] => Array
                (
                    [0] => template2.php
                )

        )

    [1] => Array
        (
            [file] => /home/dklab/domains/www/lib/PHP_CodeFilter/demo/test/PHP_CodeFilter/filter.php
            [line] => 23
            [function] => includefile
            [class] => php_codefilter
            [type] => ->
            [args] => Array
                (
                    [0] => template.php
                )

        )

)

Проверка вызова несуществующей функции (фатальная ошибка):
(Должна быть ссылка на /home/dklab/domains/www/lib/PHP_CodeFilter/demo/test/PHP_CodeFilter/template.php!)
Fatal error: Call to undefined function: aaa() in /home/dklab/domains/www/lib/PHP_CodeFilter/demo/test/PHP_CodeFilter/template.php on line 16