<分区>
我想知道在 PHP 应用程序中处理 Hook 的最佳方法是什么
- 这样我就可以在不修改代码主体的情况下插入自定义或“插件”功能。
我知道 Wordpress 具有类似的功能。 做如下事情真的可以吗:
if (file_exists('file_before'){ include('file_before'); }
print 'hello';
if (file_exists('file_after'){ include('file_after'); }
<分区>
我想知道在 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 - 传递给构造函数的参数必须是接口(interface)的实例,给定的装饰器实例
ruby-on-rails-3.1 - After_update 钩子(Hook)为 :if syntax
java - 我可以编写一个 Java 加载器类来在加载的类中 Hook HTTP 请求吗?