最近小弟正在学习thinkphp,在练习的时候遇到了一个小问题,望请高手指点迷津。thinkPHP 3.1说明文档——扩展——行为扩展有如下提示:三、不放入标签直接执行
有时候,行为的调用不一定要放到标签才能调用,如果需要的话,我们可以在控制器中直接调用行为。例如,我们可以把用户权限检测封装成一个行为类,例如:
class TestBehavior extends Behavior {
// 行为参数定义
protected $options = array(
'USER_AUTH_ON' =>true, // 是否开启用户认证
'USER_AUTH_ID' => 'user_id', // 定义用户的id为权限认证字段
);
// 行为扩展的执行入口必须是run
public function run(&$return){
if(C('USER_AUTH_ON ')) {
// 进行权限认证逻辑 如果认证通过 $return = true;
// 否则用halt输出错误信息
printf("%s" , "Hello world");
}
}
定义了Test行为后,然后在_initialize方法中直接用下面的方式调用:
B('Test');但我在Lib/Action/控制器下按照说明访问代码,但是总是报这个错。
Class 'TestBehavior' not found D:\wamp\www\thinkPHP\ThinkPHP\Common\common.php 第 425 行.
有时候,行为的调用不一定要放到标签才能调用,如果需要的话,我们可以在控制器中直接调用行为。例如,我们可以把用户权限检测封装成一个行为类,例如:
class TestBehavior extends Behavior {
// 行为参数定义
protected $options = array(
'USER_AUTH_ON' =>true, // 是否开启用户认证
'USER_AUTH_ID' => 'user_id', // 定义用户的id为权限认证字段
);
// 行为扩展的执行入口必须是run
public function run(&$return){
if(C('USER_AUTH_ON ')) {
// 进行权限认证逻辑 如果认证通过 $return = true;
// 否则用halt输出错误信息
printf("%s" , "Hello world");
}
}
定义了Test行为后,然后在_initialize方法中直接用下面的方式调用:
B('Test');但我在Lib/Action/控制器下按照说明访问代码,但是总是报这个错。
Class 'TestBehavior' not found D:\wamp\www\thinkPHP\ThinkPHP\Common\common.php 第 425 行.
TestBehavior.class.php
加个class