ThinkPHP CBD模式中 自定义行为

来源:互联网 发布:测量长宽高的软件 编辑:程序博客网 时间:2024/04/29 09:38

在ThinkPHP 3.X中加入了CBD模式,阅读了一下官方的文档之后,感觉这个CBD模式中的B(Behavior),官方的解释是这样的:

行为(Behavior)是ThinkPHP扩展机制中比较关键的一项扩展,行为既可以独立调用,也可以绑定到某个标签(位)中进行侦听。

而我对于这个的理解,其实就是一种事件的侦听,当我们使用行为这个动作的时候,我们就可以在thinkPHP中任何的地方调用;官方其实已经有写好的一些行为,而这些行为的文件就在 ThinkPHP/Library/Behavior文件夹下面。当我们要使用这些行为的时候,有两个添加侦听的方法。

使用functions.php中的tag(‘标签’,’变量’)

tag('标签',$变量);

或者是使用

Hook::listen('标签',$变量);

调用后,定义好的行为就会执行了;而如果我们想自定义行为那应该怎样操作呢?
1:首先我们要先创建一个新的类,例如TestBehavior.class.php,当然囖我们也需要按照thinkPHP中的文件命名规则来进行命名
2:类创建好之后,我们还需要在这个类中创建一个run的方法(必须的)

class TestBehavior{    // 行为扩展的执行入口必须是run    public function run($params){        echo 'RUNTEST BEHAVIOR '.$params;    }}

3:然后我们还需要为这个行为注册一个行为,注册行为的文件为ThinkPHP->common.php在这个文件里面我们可以看到一些官方已经注册号的行为

// 行为扩展定义    'tags'  =>  array(        'app_init'     =>  array(            'Behavior\BuildLiteBehavior', // 生成运行Lite文件        ),                'app_begin'     =>  array(            'Behavior\ReadHtmlCacheBehavior', // 读取静态缓存        ),        'app_end'       =>  array(            'Behavior\ShowPageTraceBehavior', // 页面Trace显示        ),        'view_parse'    =>  array(            'Behavior\ParseTemplateBehavior', // 模板解析 支持PHP、内置模板引擎和第三方模板引擎        ),        'template_filter'=> array(            'Behavior\ContentReplaceBehavior', // 模板输出替换        ),        'view_filter'   =>  array(            'Behavior\WriteHtmlCacheBehavior', // 写入静态缓存        ),        'test'   =>  array(            'Behavior\TestBehavior', // 自定义行为        ),    ),

到此整个行为就已经注册好了,当我们在项目中调用tags(‘test’,var)Hook::listen(test,变量);我们所定义的行为就会执行起来了。

0 0
原创粉丝点击