用php构建一个插件系统

2022-08-30 13:10:31

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

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

有没有人对如何进行有任何好的想法?如果有人能概述一些更受欢迎的程序是如何做到这一点的,那将是完美的。


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

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

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


答案 2

推荐