php - 执行 PHP 钩子(Hook)的最佳方法

标签 php hook

<分区>

我想知道在 PHP 应用程序中处理 Hook 的最佳方法是什么
- 这样我就可以在不修改代码主体的情况下插入自定义或“插件”功能。

我知道 Wordpress 具有类似的功能。 做如下事情真的可以吗:

if (file_exists('file_before'){ include('file_before'); }

print 'hello';

if (file_exists('file_after'){ include('file_after'); }

最佳答案

当涉及到钩子(Hook)时,我通常做的事情是创建一个 HookLoader 类,它将存储两种类型的钩子(Hook),PRE 和 POST。因为 PHP 是单线程解释器,所以不会有 DURING 这样的事情。

举个例子:

$Hooks = new HookLoader();

$Hook->Run("PRE","database_connect");
$Database->Connect();
$Hook->Run("POST","database_connect");

钩子(Hook)目录中的每个钩子(Hook)都应该这样命名:

name_pre_database_connect.hook.php

Hook 文件的格式如下:

{name}_{type}_{event}.hook.php

这将允许您创建无限数量的 Hook 。

我最好将钩子(Hook)类设为抽象和静态,这样您就可以在实际对象中运行钩子(Hook)调用,因此只要它们具有 Hook::run("type""事件");

关于php - 执行 PHP 钩子(Hook)的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4379757/

相关文章:

php - 获取要在 WooCommerce 3 中显示的产品价格

npm - 如何从 npm "postinstall" Hook 获取包名称?

drupal - 使用 Drush 运行单独的 cron 作业

php - 字符串和数组的操作

带有 SESSION 的 PHP If 语句

php - 传递给构造函数的参数必须是接口(interface)的实例,给定的装饰器实例

ruby-on-rails-3.1 - After_update 钩子(Hook)为 :if syntax

java - 我可以编写一个 Java 加载器类来在加载的类中 Hook HTTP 请求吗?

c - 有没有办法知道在 Linux 中传递给 __free_hook 的指针的大小?

php - 关于邮寄 ascii 图像 -php