ThinkPHP-扩展指南-行为扩展

来自站长百科
跳转至: 导航、​ 搜索

导航:返回上一页

行为扩展和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');  

配合应用扩展机制的话,例如我们在项目初始化标签的执行方法里面使用了上面的代码,就会在项目初始化的时候自动调用该行为了。