35

我正在为自己使用定制 CMS,并且正在考虑实现一个插件系统,以便我可以更轻松地扩展代码。不过,我在概念化架构和布局时遇到了麻烦。

我知道我可以通过一些实现类似功能的开源程序,但这实际上只是学术性的,所以我真的不想花太多时间挖掘外国代码。

有没有人对如何进行有任何好主意?如果有人可以概述一些更流行的程序是如何做到的,那就完美了。

4

1 回答 1

41
  1. 定义您希望插件插入的功能(即,它们将做什么以及做什么)
  2. 定义适合插件的类层次结构,例如,所有文章修饰插件都应继承自 ArticleMangler
  3. 定义插件的物理位置,例如 /plugins
  4. 导入该位置中存在的所有插件
  5. 使用装饰器观察者模式注入插件的行为或通知插件事件发生。策略也可能适用于某些情况。

如果您不小心,PHP 使这相当容易,但可能会造成混乱。我喜欢 Observer 方法,其中插件将自己注册到插件管理器,该插件管理器会通知他们发生的事情并等待他们的操作发生。

如果您不信任插件,那么您必须添加控件来控制您将允许任何插件注册的事件。

于 2008-10-20T07:19:19.463 回答