百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>网页制作> PHP中钩子的了解与实例教程
分享文章到:

PHP中钩子的了解与实例教程

发布时间:09/01 来源:未知 浏览: 关键词:

钩子定义

钩子是编程里一个常见概念,非常的重要。它使得系统变得非常容易拓展(而不消懂得其内部的实现机理,这样可以减少许多工作量)。

可以懂得为当一个玻璃球从空中落下,马上砸到人的时候,有个事件会提早发生。例如告诉阿谁被砸的人,球已经鄙人落历程中,
告诉就是一个事件,一个钩子,我们可以针对不一样的人做出不一样的响应,假如是男人我们告诉他这个球砸到人不疼,假如是女人则告诉她很疼。

钩子的作用

钩子函数可以截获并处置其他利用程序的新闻。每当特定的新闻发出,在没有抵达目的窗口前,钩子程序就先捕捉该新闻,亦即钩子函数先得到操纵权。这时钩子函数即可以加工处置(改动)该新闻,也可以不作处置而连续传递该新闻,还可以强迫完毕新闻的传递。

钩子实现

钩子的完全实现应当叫事件驱动。事件驱动分为两个阶段,第一个阶段是注册事件,目的是给将来大概发生的“事件”起一个名字。

简便的实现办法是:

用单例模式发生一个耐久的对象或者注册一个全局变量,然后将事件名称,乃至该事件对应的类与办法插入全局变量即可。也就是挂载一个钩子。

第二个阶段是触发事件,本质上就是在事件的全局变量中查询要触发的事件名称,然后寻到注册好的类与办法,实例化并运转。这模样就可以挣脱传统方式中程序必需按次序的规则,进一步实现解除耦合的目的。

代码示例一:

class Ball{
 public function down(){
 echo  "ball is downing ";
 //注册事件
 Hook::add("man");
 Hook::add("Women");
 }
 public function do(){
 Hook::exec();
 }
}
// 钩子的定义
class Hook{
 private $hooklist = null ;
 // 增加
 public function add($people){
 $this->hooklist[] = new $people();
 }
 // 触发事件
 public function exec(){
 foreach($this->hooklist as $people){
   $addon ->act();
 }
 }
}
// 钩子实现
class man(){
 public function act(){
 echo 'notiong';
 }
}
class WoMan(){
 public function act(){
 echo 'oh my god ';
 }
}
class child(){
 public function act(){
 echo 'oh my god ';
 }
}
$ball = new Ball();
$ball ->down();
$ball ->do();

代码示例二:

// 假如需要增加小孩,就可以做增加一个小孩Hook::add("child");
 /*=========================钩子的升级版============================================/*
class Hook{
  private $hookList;
  //增加
 function add($name,$fun){
 $this->hookList[$name][] = $fun;
 }
function excec($name){
  $value = func_get_args();
  unset($value[0]);
  foreach ($this->hookList[$name] as $key => $fun) {
    call_user_func_array($fun, $value);
  }
}
}
$hook = new Hook();
$hook->add('women',function($msg){
 echo 'oh my god'.$msg ;
})
$hook->add('man',function($msg){
 echo 'nothing'.$msg ;
})
// 施行
$hook->excec('man','taoge');
$hook->excec('women','xxx');

引荐教程:PHP教程

以上就是PHP中钩子的懂得与实例教程的具体内容,更多请关注百分百源码网其它相关文章!

打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有153人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板