提示:PHP中插件机制的一种实现。

本文的出发点是我对插件机制及其在PHP中的实现的理解。这个方案只是PHP中插件机制的一个实现,它是与您共享的,欢迎您一起讨论它。

插件或插件,是一种特定的功能模块(由第三方开发者通常实现),其特点是:当你需要它来激活它,不需要它来禁用/删除它;无论是激活或禁用不会影响系统的核心模块操作,也就是说插件是一种非侵入式的模块化设计,实现了核心程序和插件的松散耦合,一个典型的例子是在WordPress第三方插件的数量,如akimet插件用来过滤用户评论垃圾邮件。

一个健壮的插件机制,我想我们必须具备以下特性:

插件的动态监视和加载(查找)
插件的动态触发

上述两点的实施并不影响核心程序的运行。

要在程序中实现插件,首先要考虑的是定义不同的钩子(钩子)。钩子是一个非常合乎逻辑的概念。您可以认为它是由系统保留的插件的触发器条件,其逻辑原理如下:当系统执行到钩子时,它将决定钩子的条件是否满足。如果满足,它将首先转到钩子的函数,然后返回继续执行剩下的程序;如果不满足,跳过它,这有点像程序中的中断保护逻辑。

有些钩系统可预先设计,例如,之前我给垃圾邮件过滤钩子的评论,通常都是由核心系统开发商为评论的处理逻辑;另一种类型的钩子可以由用户自定义(由第三方开发商),通常在表示层,如普通的PHP页面的显示形式。

也许你觉得上面的话很无聊,而且很困;但是为了理解下面我写的代码,理解上面的原则是很重要的。

在PHP的插件机制的核心实现之后,整个机制的核心被划分为三个块:

插件管理器类:这是核心的核心。它是一个应用程序全局全局对象。它有三个主要职责:

它负责监听所有的插件,这些插件已经注册并实例化对象。
负责注册所有插件。
当满足钩条件时,触发相应的对象方法。

插件功能的实现主要由第三方开发人员完成,但需要遵循一定的规则。此规则由插件机制指定。由于插件机制不同,下面的显示代码将看到这条规则。

插件的触发器:钩子的触发条件,具体来说,这是一小段代码,放置在需要插件实现的地方,用于触发钩子。