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
Copyright © 2021 海南的叶子 All Rights Reserved 琼ICP备2021000725号

琼公网安备 46900702000037号