thinkphp 之 行为扩展

行为扩展,想要在行为中添加某种独立的功能,不必引用,可以直接使用行为扩展的功能
比如在每个行为中添加角色判断的功能,只需增加角色判断的行为,按照tp的规范添加到执行的位置就可以了

创建行为文件 在项目/Lib/Behavior/目录中 或 系统的行为扩展目录Extend/Behavior/ 自动加载
命名:TestBehavior.class.php
内容格式:
class TestBehavior extends Behavior{
    //行为定义参数    可以没有这个属性
    protected $options=array(
    
        'TEST'=>false,    //这里定义的TEST 相当与在config.php文件中 添加了此条作为自定义默认配置,可以在config.php文件中重新定义 并可在C方法中使用,
        //同样的其他配置继续写入
    );
    
    //扩展执行入口
    public function run(&$p)    //引用参数必须有,否则报错 用于返回值
    {
        if(C('TEST')){    //配置文件中开启后执行
            $this->ex_();
        }else{
            //代码段
        }
    }

    public function ex_()
    {
        //代码段
    }
    
}

扩展是使用

一,标签中使用
    在项目配置文件目录 建立tag.php文件
    内容格式:
    return array(
        '标签位'=>'行为名',    //比如TestBehavior 填写 'test'
    );

    标签位可以填写两种
        1,系统定义的标签位
            app_init    应用初始化标签位
            path_info    PATH_INFO检测标签位
            route_check    路由检测标签位
            app_begin    应用开始标签位
            action_name    操作方法名标签位
            action_begin    控制器开始标签位
            view_begin    视图输出开始标签位
            view_template    视图模板解析标签位
            view_parse    视图解析标签位
            view_filter    视图输出过滤标签位
            view_end    视图输出结束标签位
            action_end    控制器结束标签位
            app_end    应用结束标签位

        2,手动放置的标签(在行为中)
            tag('标签位');
            带参数:tag('标签位',变量名); *因为是函数参数是引用,所以必须使用变量名,之后输出变量名即可

    *如果要完全替换系统行为,格式为:
            return array(
                'app_end'=>array('Test','_overlay'=>1), //注意: _overlay 参数
            );

二 函数方式:add_tag_behavior('app_end','Test');

三 Action中直接使用   B('行为类名'); 也可带参数B('行为类名',变量);

你可能感兴趣的:(PHP)