## 钩子
每个插件都必须至少对应一个钩子,添加钩子,需要先在控制器中添加以下方法
~~~
$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(){
}
}
```
定义好之后,就可以进入后台->控制面板->插件管理,进行安装了。