registerFilter 过滤器


过滤器主要用于编译之前,以及将返回内容之前进行替换内容的方法。

需要显式的注册,不会自动加载。

参数说明:

string  $type   注册类型,
只有两种过滤器  pre 和 output  过滤器,
pre         用于模板加载后,编译之前对模板内容进行替换。
output 用于输出之前进行内容替换。

$func 替换的函数,可以是匿名函数 全局函数名 静态类::函数名 只要满足 is_callable 都可以支持。

$func  会接收2个参数 ,第一个是 $content  第2个是 $sdopx 模板引擎实例。
$func 需要返回 被替换后的内容。

例子如下:

define('ROOT_DIR', __DIR__);
date_default_timezone_set('PRC');
require(ROOT_DIR . '/vendor/autoload.php');

use sdopx\Sdopx;

Sdopx::$defaultTemplateDirs = './view';
Sdopx::$defaultCompileDir = './runtime';
//注册前置过滤器
Sdopx::registerFilter('pre', function ($content, $sdopx) {
    return str_replace('__URL__', '{$url}', $content);
});
//注册输出过滤器
Sdopx::registerFilter('output', function ($content, $sdopx) {
    $public = isset($sdopx->_cache['__PUBLIC__']) ? $sdopx->_cache['__PUBLIC__'] : '/static/';
    return str_replace('__PUBLIC__', $public, $content);
});

$sdopx = new Sdopx();
$sdopx->_cache['__PUBLIC__'] = '/public/';
$sdopx->assign('url', 'sdopx.wj008.net');
$sdopx->display('index.tpl');


测试模板:

<html>
<title>sdopx test</title>
<script src="__PUBLIC__/my.js"></script>
<body>
<a href="__URL__">__URL__</a>
</body>
</html>


输出:

<html>
<title>sdopx test</title>
<script src="/public//my.js"></script>
<body>
<a href="sdopx.wj008.net">sdopx.wj008.net</a>
</body>
</html>




Copyright © 2021 海南的叶子 All Rights Reserved 琼ICP备2021000725号

琼公网安备 46900702000037号