## 钩子 每个插件都必须至少对应一个钩子,添加钩子,需要先在控制器中添加以下方法 ~~~ $re = hook('sendsms', ['params' => [ 'mobile' => $mobile ]]); ~~~ 或在视图中添加 ~~~ {:hook('addgoodsview')} ~~~ 然后在后台->控制面板->钩子列表中添加对应的钩子即可。 ![](https://box.kancloud.cn/0f170b56f838f23b432af15cc8ee20ef_385x404.png) ## 插件 每个插件都有一个入口文件,命名方式为`插件名称.php`,这里以`Helloworld`为例。 在`addons`目录下建立一个新插件目录`helloworld`,再新建一个`Helloworld.php`的入口文件。 ~~~ addons ├─helloworld │ │ Helloworld.php ~~~ 插件有一个独立的顶级命名空间”`addons`“,所有插件入口文件必须继承`use myxland\addons\Addons;`,并且必须实现三个方法:`install()`和`uninstall()`和`config()`。 比如: ``` <?php namespace addons\helloworld; use myxland\addons\Addons; /** * 演示插件 */ class Helloworld extends Addons { /** * 安装方法必须实现 */ public function install(){ return true; } /** * 卸载方法必须实现 */ public function uninstall(){ return true; } /** *必须实现配置函数 */ public function config(){ } } ``` 然后还需要定义插件的相关信息`$info`参数。 ``` <?php namespace addons\helloworld; use myxland\addons\Addons; /** * 演示插件 */ class Helloworld extends Addons { /** * @var array 插件信息 */ public $info = [ // 插件名[必填] 'name' => 'helloworld', // 插件标题[必填] 'title' => '你好,世界', // 插件唯一标识[必填],格式:插件名.开发者标识.plugin 'description' => 'helloworld.ming.plugin', // 插件作者[必填] 'author' => 'mark', // 插件版本[必填],格式采用两段式:主版本号.次版本号 'version' => '1.0.0' ]; /** * 安装方法必须实现 */ public function install(){ return true; } /** * 卸载方法必须实现 */ public function uninstall(){ return true; } /** *必须实现配置函数 */ public function config(){ } //插件要实现对应钩子的方法 public function sendsms(){ } } ``` 定义好之后,就可以进入后台->控制面板->插件管理,进行安装了。