行为扩展,想要在行为中添加某种独立的功能,不必引用,可以直接使用行为扩展的功能
比如在每个行为中添加角色判断的功能,只需增加角色判断的行为,按照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('行为类名',变量);
比如在每个行为中添加角色判断的功能,只需增加角色判断的行为,按照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('行为类名',变量);
本文介绍如何在项目中通过行为扩展来添加特定功能,包括创建行为文件、定义行为逻辑及如何在不同阶段触发这些行为。
158

被折叠的 条评论
为什么被折叠?



