PHP中钩子的理解与实例教程-php教程

资源魔 29 0

钩子界说

钩子是编程里一个常见概念,十分的首要。它使患上零碎变患上十分容易拓展(而不必了解其外部的完成机理,这样能够缩小不少工作量)。

能够了解为当一个玻璃球从空中落下,行将砸到人的时分,有个事情会提前发作。例如通知阿谁被砸的人,球曾经正在着落进程中,
通知就是一个事情,一个钩子,咱们能够针对没有同的人做出没有同的相应,假如是汉子咱们通知他这个球砸到人没有疼,假如是女人则通知她很疼。

钩子的作用

钩子函数能够截获并解决其余使用顺序的音讯。每一当特定的音讯收回,正在不抵达目的窗口前,钩子顺序就先捕捉该音讯,亦即钩子函数先失去管制权。这时候钩子函数便可以加工解决(扭转)该音讯,也能够没有作解决而持续通报该音讯,还能够强迫完结音讯的通报。

钩籽实现

钩子的完好完成应该叫事情驱动。事情驱动分为两个阶段,第一个阶段是注册事情,目的是给将来可能发作的“事情”起一个名字。

简略的完成办法是:

用单例模式孕育发生一个耐久的工具或许注册一个全局变量,而后将事情称号,和该事情对应的类与办法拔出全局变量便可。也就是挂载一个钩子。

第二个阶段是触发事情,实质上就是正在事情的全局变量中查问要触发的事情称号,而后找到注册好的类与办法,实例化并运转。这样子就能够解脱传统形式中顺序必需按程序的规定,进一步完成解除了耦合的目的。

代码示例一:

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中钩子的了解与实例教程的具体内容,更多请存眷资源魔其它相干文章!

标签: php php开发教程 php开发资料 php开发自学 教程 钩子 实例

抱歉,评论功能暂时关闭!