PHP 插件与钩子

之前看了许多篇关于PHP钩子(hook)的解析文章,不是很懂。

大多都描述的太过复杂,或者直接抛出一个实例草草说明其中各个函数的用处就over了。

那么今天来谈谈我对钩子的理解。

假设有一个Plugin.class.php的插件类文件【本例中不考虑用数据库存储插件信息】

  1. 初始化,加载钩子的函数 Plugin::Init()

假设程序中有一个plugins的目录,目录中均是单个的插件文件。那么本函数会遍历目录下的文件,读取每个插件的信息,并把信息push进一个插件数组里。

  1. 等待程序运行到 钩子Plugin::Hook(‘hook点的名称’)

注:钩子不是PHP或者系统本身就自带的,是程序员手动在一些认为需要拓展的地方加入嵌入点(hook),然后程序执行到此处触发Hook函数。

  1. 检测当前hook点有哪些插件需要被触发,则运行那些插件

如2中的示例,在Hook函数中有一个hook名称的参数,从1中的插件数组中取出有该hook名称的插件,运行该插件即可。

插件数组示例:
其中包含了hook点下的插件类,其拥有的函数名,插件所在目录等等


评论区