# Niushop开源商城钩子开发
---
下面以会员签到插件(NsMemberSign)的原理通俗的说明钩子的调用原理:
* **钩子的调用方式,实例 hook\(‘memberAction’, \['type' => 'NsMemberRegister', 'uid' => 12\]\);**
* **查询可实现memberAction的钩子列表:**
```
```
* ```
通过查询数据库sys\_hook表中可执行的插件列表(实际存储缓存)
![](https://img.kancloud.cn/f6/fa/f6fa0b70f18542dac17535cc009d2534_1091x78.png)
通过查看可执行memberAction的插件: NsMemberRegister,NsMemberPraise,NsMemberSign,NsMemberEvaluate,NsMemberShare
```
* **通过实例化对应插件的入口类,建立对象,同时执行对应的方法**
```php
例如:插件执行列表存在:NsMemberSign,首先创建对象:
$class = new addons\NsMemberSign\NsMemberEvaluateAddon();
其次调用钩子方法(方法名=钩子名 ,参数=对应传入参数):
$res = $class->memberAction(['type' => 'NsMemberRegister', 'uid' => 12]);
```
* **循环执行插件列表依次返回数据**
钩子的安装:
* **钩子是对应插件的入口文件中的public方法,在执行安装插件时存入sys\_hook数据表,钩子执行时查询表进行调用。**