插件是用于扩展系统的功能的一些独立“组件”。
插件的定位是用于实现某些简单的显示及数据处理的功能扩展。所以我们的初衷是插件的开启关闭,不会影响原有数据。
物理定义:
位于站点根目录 /addon 下的一个类库,可以被系统的hook函数访问到。

公共模块下有一个AddonBase类,此类继承自ControllerBase 说明是一个控制器的子类,所有插件的控制器都需要继承AddonBase类,在此类中重写了框架的fetch与get方法,实现了像其他模块一样的模板渲染方式及依赖注入对象。
注意: 插件的业务逻辑层继承的是app\common\model\Addon 而 不是 app\common\logic\Addon。因为此处的继承只是为了实现模型层对象的注入,所以无需继承app\common\logic\Addon。逻辑层的Addon里面封装的是插件的执行,安装,卸载等机制。
插件的静态资源移动到了public/static/addon目录下,在插件的模板中使用 _STATIC
会自动定位到插件的静态资源目录中。
插件也不例外,作者建议尽量将业务逻辑封装在业务逻辑目录中,供控制器引用,数据库相关操作尽量封装在ModelBase中,供业务逻辑层引用。