我正在用 PHP 构建一个简单的类似 CMS 的应用程序,它应该允许管理员通过插件(从管理区域内)启用附加功能。
目前它基于观察者模式,它的工作方式如下:
- 每个插件都必须扩展一个抽象类
- 除了一个“init”方法外,插件(子类)定义的所有方法都被视为观察者。
- 抽象类的构造函数是最终的,它用于
get_class_methods
将这些观察者映射到事件。 - 从应用程序启动到结束,它会通知这些观察者它的事件,例如
app_start
//等process_request
,app_end
并执行观察者函数,应用程序实例作为第一个参数,因为应用程序也充当插件可以的服务容器用于访问其他组件,例如 db。
这是在 PHP 中实现插件架构的好方法吗?还是有更好的方法?我已经运行了这个,但是当我向抽象类添加新的 API 时,子类可以使用它开始感觉很奇怪:)