在用一些开源框架的时候,我们很多额外的功能拓展都很容易集成到框架里。为什么呢?其中关键的地方就是框架实现了Hooks的功能。
(Hooks)是一种用于在程序执行过程中插入自定义代码的机制。它允许开发者在特定的时间点或事件发生时执行自己编写的代码。
钩子的作用主要有以下几个方面:
需要注意的是,钩子机制的实现方式可能因框架或库的不同而有所差异。有些框架提供了专门的钩子接口或事件系统,方便开发者使用和管理钩子函数。在使用钩子时,应遵循相应框架或库的规范和最佳实践。
用之前用python实现实现过类似的功能,这次就用php来演示吧。
定义一个添加方法和触发事件
class HookController
{
private $hooklist = null;
// 添加
public function add($people)
{
$this->hooklist[] = new $people();
}
// 触发事件
public function exec()
{
foreach ($this->hooklist as $people) {
$people->act();
}
}
}
// 钩子实现
class Man
{
public function act()
{
echo 'oh a man';
}
}
class WoMan
{
public function act()
{
echo 'oh a woman ';
}
}
class Child
{
public function act()
{
echo 'oh a child ';
}
}
public function index()
{
$hook = new HookController();
$hook->add(Man::class);
$hook->add(WoMan::class);
$hook->exec();
}
这个是一个最简单的demo,也是最重要的基础。现实的框架都是在这个基础上的不同变形,累加功能。