🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
### 说明 每个插件目录下都要有Index.php文件,因为插件中的对钩子中的实现方法都在该文件中定义。在程序代码中调用的插件钩子的具体实现方法都是在插件目录下的Index文件中实现的。 #### 下面看下Index.php文件中都有神马,代码如下: ~~~ <?php namespace plugins\DemoExample; use app\common\controller\Plugin; /** * EacooPHP演示插件 */ class Index extends Plugin{ /** * @var array 插件钩子 */ public $hooks = [ 'PageHeader', 'PageFooter' ]; /** * 页面头部钩子实现 * @param [type] $param [description] * @date 2018-01-02 * @author 心云间、凝听 <981248356@qq.com> */ public function PageHeader($param=null) { //逻辑代码... } /** * 页面底部钩子实现 * @param [type] $param [description] * @date 2018-01-02 * @author 心云间、凝听 <981248356@qq.com> */ public function PageFooter($param=null) { //逻辑代码... } /** * 插件安装方法 */ public function install(){ return true; } /** * 插件卸载方法 */ public function uninstall(){ return true; } } ~~~ 1.从上面代码中可以看出,我们创建了两个钩子。 ~~~ /** * @var array 插件钩子 */ public $hooks = [ 'PageHeader', 'PageFooter' ]; ~~~ >[info] 通过$hooks变量,数组的形式添加钩子。 2.当定义了钩子后,还需要实现钩子的功能。所以要完成以下代码: ~~~ /** * 页面头部钩子实现 * @param [type] $param [description] * @date 2018-01-02 * @author 心云间、凝听 <981248356@qq.com> */ public function PageHeader($param=null) { //逻辑代码... } /** * 页面底部钩子实现 * @param [type] $param [description] * @date 2018-01-02 * @author 心云间、凝听 <981248356@qq.com> */ public function PageFooter($param=null) { //逻辑代码... } ~~~ 完成钩子实现逻辑。 > [info]这样在插件安装的时候,系统会自动把钩子和插件进行绑定,插件已经安装成功,可以看数据库的hooks表中,对应的钩子是否已经和插件进行关联绑定。 3.钩子调用 既然插件已经实现了钩子的方法,那么剩下的就是在指定地方进行调用和显示。 调用钩子方法是`hook('钩子名称')` 4.监听安装和卸载方法。 从代码中,你会发现有另外两个方法:install和uninstall