## 监听钩子
`listen` 执行机制和过滤器基本一致,执行行为下的所有的钩子,监听传入的参数,然后对其作出对应的判断,只是不会返回值.
```
Hooks::listen('行为名称','参数(按需求传参即可)');
```
### 例:
实现一个满足阅读次数给用户增加积分的功能
添加钩子
```
Hooks::add('read_num',Hooks\Hooks::class,'read_num');
Hooks::add('read_num',Hooks\Hooks::class,'read_num2');
```
编写钩子
```
<?php
namespace Hooks;
use \GFPHP\DB;
class Template
{
//-- 访问第1次增加1金币
public function read_num($user_read_num,$user_id){
if($user_read_num==1){
DB::table('users')->where('user_id',$user_id)->setInc('score',1);
}
}
//-- 访问第10次增加10金币
public function read_num2($user_read_num,$user_id){
if($user_read_num==10){
DB::table('users')->where('user_id',$user_id)->setInc('score',10);
}
}
}
```
执行钩子
```
Hooks::listen('read_num',[
//-- 阅读次数
1,
//-- 用户ID
1
]);
```
用户积分会增加一个
如果阅读次数是10
```
Hooks::listen('read_num',[
//-- 阅读次数
10,
//-- 用户ID
1
]);
```
用户积分会增加10个.
- 项目安装
- 开发前必读
- 配置项目
- 基础配置
- 数据库配置
- 路由基础配置
- 调试的基础配置
- 文件上传配置
- 命令行配置
- 缓存配置
- 视图配置
- 视图默认变量
- 配置的读取和使用
- 钩子的配置
- 路由
- 默认的路由
- 以配置文件设置路由规则
- 以Annotation形式设置路由
- URL生成
- 控制器
- 创建一个控制器
- 视图渲染
- 数据库
- 简述
- 创建一个数据库模型
- 链式操作
- 数据查询
- 更新数据
- 插入数据
- 删除数据
- 事务操作
- 高级功能
- 字段验证
- 增加一个验证规则
- 自带的验证规则
- 验证规则的使用
- 自动判断规则
- 数据分表
- 数据分表准备
- 视图
- 视图实例
- 自定义模板标签
- 输出变量
- 判断语法
- 遍历循环
- 使用函数
- 原样输出
- 模板引用
- 模板继承
- 引入资源
- 原生PHP标签
- 自定义模板引擎规则
- 钩子
- 行为
- 过滤器
- 监听
- 缓存
- 缓存的配置
- 设置缓存
- 读取缓存
- 删除缓存
- 命令行
- 命令行的使用
- 自定义命令行Handler