使用PHP构建插件系统

36

我正在为自己制作一款定制的CMS,并考虑实现插件系统以便更轻松地扩展代码。然而,我在构思架构和布局方面遇到了困难。

我知道我可以查看一些实现类似功能的开源程序,但这只是学术研究,因此我真的不想花费太多时间研究外国代码。

是否有人有好的想法来继续进行?如果有人能概述一些比较流行的程序如何实现插件系统,那就太完美了。


你能提供你自己对这个问题的见解吗?你已经问了这个问题有一段时间了,我很想知道你从自己编写定制的 PHP CMS 的经验中学到了哪些最重要的方面。 - Adrian Moisa
虽然我不是OP,但我认为值得评论的是,编写自己的CMS是一件非常简单和直接的事情——只要你一步一步地尝试。阅读关于此的书籍或教程可能会比有帮助更加混乱(当然,阅读像php.net这样的好文档总是有帮助的)。我学到的另一件事是:使用面向对象编程(也许使用Composer自动加载器)。类就像盒子,你必须把所有东西都分类放好。再次强调,阅读关于面向对象编程的资料可能会让你的大脑受损,所以要用自然的方式去做,而不是像那些Java狂热者说的那样。没有什么可补充的:简单的PDO、会话、JS编辑器... - chang zhao
1个回答

42
  1. 定义插件要插入的功能(即,它们将做什么以及在哪些方面)
  2. 定义一个类层次结构,插件应适合其中,例如,所有文章处理插件都应继承自ArticleMangler
  3. 为插件定义物理位置,例如/plugins
  4. 导入位置中存在的所有插件
  5. 使用DecoratorObserver模式注入插件的行为或通知插件事件发生。在某些情况下,Strategy也可能适用。

PHP使这相当容易,但如果不小心会造成混乱。我喜欢观察者方法,其中插件向插件管理器注册,后者通知它们发生了什么,并等待它们的操作发生。

如果您不信任插件,则必须对您要允许任何插件注册的事件进行控制。


2
对于有兴趣的人,这里是最常用的设计模式列表。链接:https://github.com/domnikl/DesignPatternsPHP。 - tleb

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接