2010-03-08 46 views
3

我在Kohana PHP框架中看到了钩子,他们是作为某种事件(Kohana的事件,即某种方法重载)触发的某种回调函数工作的。钩子......他们到底在干什么

我在Wordpress中看到了钩子,我不知道它们是什么或如何使用它们(昨天刚刚看到它们)。

我正在寻找“非框架”的PHP中的事件,我找不到。

钩子只能在“基于事件”的环境中工作吗?他们究竟是什么(一般来说,不只是在PHP中)?如果不是在“基于事件”的环境中,它们有什么用处?

回答

3

钩子是,事实上,挂钩插入各种各样的事件堆栈;一些控制器迭代的值列表,如果您有任何注册的事件,控制器可以运行您的自定义代码。但是PHP本身没有这样的东西(有用的),所以你自己做或者使用你在你最喜欢的应用/系统中找到的东西。这是创建插件体系结构的一种相当常见的方式,但也可以用于应用程序控制和其他事情。我之前写过更多关于my quest的更多universal event and operating set of stack events,其中包括this post here on StackOverflow

正如其他人所说的,PHP是无状态的,所以在我使用它们的时候,我将它们用作简单的执行列表,并将我的应用程序的每个部分都嵌入到它中。这种方式我非常可扩展,并且有插件堆栈的基础。 (当我感到无聊或退休或者我的手上有太多时间时,我会释放它一个神奇的日子,等等)

你会发现类似的堆栈和钩子,例如,WordPress,所以一个处理CSS的插件会将自己绑定到CSS_DEFINITION_EVENT(基本上,是将CSS内容写入HTML部分的WordPress应用程序的那部分)。这东西无处不在。在PHP中,它只适用于(大多数情况下)每个PHP页面所要求的限制(除非您在web服务器外部执行PHP),但所有主要的操作系统,应用程序,框架和系统都有某种形式的事件堆栈。 PHP只是没有一个(严重)内置。

1

PHP是无状态的,因此它不能有真正的事件。通过手动添加和存储事件监听器(要调用的函数)来仿真它们,然后在代码中发生某些事情时明确地调用所述监听器。就像上传了一张新照片或发生了404错误。

相关问题