background image

 

php 插件机制在 PHP 中实现方案

PHP 中插件机制的一种实现方案. 这篇文章的出发点是我对插件机制的理解,及其在 PHP
中的实现。此方案仅是插件机制在 PHP 中的
提示:PHP 中插件机制的一种实现方案. 
 
这篇文章的出发点是我对插件机制的理解,及其在 PHP 中的实现。此方案仅是插件机制
在 PHP

 

中的实现方案之一,写下来和大家分享,欢迎大家一起讨论。

 
插件,亦即 Plug-in,是指一类特定的功能模块(通常由第三方开发者实现),它的特点
是:当你需要它的时候激活它,不需要它的时候禁用/删除它;且无论是激活还是禁用都
不影响系统核心模块的运行,也就是说插件是一种非侵入式的模块化设计,实现了核心
程序与插件程序的松散耦合。一个典型的例子就是 Wordpress 中众多的第三方插件,比如
Akimet 插件用于对用户的评论进行 Spam

 

过滤。

 

 

一个健壮的插件机制,我认为必须具备以下特点:
 
插件的动态监听和加载(Lookup  

 

插件的动态触发
 

 

以上两点的实现均不影响核心程序的运行
 
要在程序中实现插件,我们首先应该想到的就是定义不同的钩子(Hooks

); 钩子 是一

个很形象的逻辑概念,你可以认为它是系统预留的插件触发条件。它的逻辑原理如下:当
系统执行到某个钩子时,会判断这个钩子的条件是否满足;如果满足,会转而先去调用
钩子所制定的功能,然后返回继续执行余下的程序;如果不满足,跳过即可。这有点像汇

 

编中的 中断保护 逻辑。
 
某些钩子可能是系统事先就设计好的,比如之前我举的关于评论 Spam 过滤的钩子,通常
它已经由核心系统开发人员设计进了评论的处理逻辑中;另外一类钩子则可能是由用户
自行定制的(由第三方开发人员制定),通常存在于表现层,比如一个普通的 PHP 表单

 

显示页面中。
 
可能你感觉上面的话比较无聊,让人昏昏欲睡;但是要看懂下面我写的代码,理解以上

 

的原理是必不可少的。
 
下面进行 PHP

 

中插件机制的核心实现,整个机制核心分为三大块:

 
一个插件经理类:这是核心之核心。它是一个应用程序全局 Global 对象。它主要有三个职

 

责: