Manual
6.7 行为扩展
行为扩展和Widget扩展的区别其实就是Widget是用于输出的,而行为通常是执行某个方法,但通常都不需要输出,即使输出的话也许是错误提示信息之类的。
行为是可以和应用扩展配合的,因为应用扩展是很随意的,但是行为却是可以规范的。定义好的行为扩展,可以被任何应用扩展中的标签单独调用。
行为类的定义也很简单,例如下面是一个代理检测访问行为的扩展:
PHP代码
- class AgentCheckBehavior extends Behavior {
- public function run() {
- // 代理访问检测
- if(C('LIMIT_PROXY_VISIT') && ($_SERVER['HTTP_X_FORWARDED_FOR'] || $_SERVER['HTTP_VIA'] || $_SERVER['HTTP_PROXY_CONNECTION'] || $_SERVER['HTTP_USER_AGENT_VIA'])) {
- // 禁止代理访问
- exit('Access Denied');
- }
- }
- }
行为类必须定义一个run接口方法,否则无法正确调用。
命名为AgentCheckBehavior.class.php 后 放入项目的Lib\Behavior 目录下面。
接下来就是调用这个行为,在调用的地方只需要使用:
PHP代码
- B('AgentCheck');
配合应用扩展机制的话,例如我们在项目初始化标签的执行方法里面使用了上面的代码,就会在项目初始化的时候自动调用该行为了。
