钩子......他们究竟是什么

时间:2010-03-08 08:28:53

标签: php kohana

我在Kohana PHP框架中看到了钩子,它们可以作为某种事件触发的某种回调函数(Kohana的事件,即某种方法重载)。

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

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

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

3 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:1)

PHP是无状态的,因此它不能真正拥有事件。它们通过手动添加和存储事件侦听器(要调用的函数)进行模拟,然后在代码中发生某些事件时显式调用所述侦听器。就像上传了新图片或发生了404错误一样。

答案 2 :(得分:0)