registerFunction自定义模板函数
在开发中我们需要为模板提供一些常用函数,则在这里我们可以使用自定义模板函数的方法注册我们的函数。
函数注册是Sdopx的静态成员方法,需要提供两个参数,
string $name 模板函数名称
string|\Closure $func 函数字符串名,或者匿名函数
使用例子如下:
<?php
define('ROOT_DIR', __DIR__);
date_default_timezone_set('PRC');
require(ROOT_DIR . '/vendor/autoload.php');
use sdopx\Sdopx;
Sdopx::$defaultTemplateDirs = './view';
Sdopx::$defaultCompileDir = './runtime';
function func1($string)
{
return 'func1-' . $string;
}
//使用函数名注册
Sdopx::registerFunction('func1', 'func1');
class A
{
public static function func2($string)
{
return 'A::func2-' . $string;
}
}
//静态类方法
Sdopx::registerFunction('func2', A::class . '::func2');
//匿名函数
Sdopx::registerFunction('func3', function ($string) {
return '匿名func3-' . $string;
});
$sdopx = new Sdopx();
$sdopx->assign('name', 'wj008');
$sdopx->display('index.tpl');
模板:
{func1($name)}
{func2($name)}
{func3($name)}
输出:
func1-wj008
A::func2-wj008
匿名func3-wj008
未注册的函数 依然也可以在模板中使用,比如内置函数 ,全局的函数,或者静态函数(需要带有全命名空间)
如:
define('ROOT_DIR', __DIR__);
date_default_timezone_set('PRC');
require(ROOT_DIR . '/vendor/autoload.php');
use sdopx\Sdopx;
Sdopx::$defaultTemplateDirs = './view';
Sdopx::$defaultCompileDir = './runtime';
function func1($string)
{
return 'func1-' . $string;
}
class A
{
public static function func2($string)
{
return 'A::func2-' . $string;
}
}
$sdopx = new Sdopx();
$sdopx->assign('name', 'wj008');
$sdopx->display('index.tpl');
虽然未注册,但是模板中还是可以调用。
{*全局函数*}
{func1($name)}
{*命名空间必须全带上*}
{\A::func2($name)}
{*使用内置函数*}
{date('Y-m-d')}
输出结果:
func1-wj008
A::func2-wj008
2018-07-28