1、系统配置文件
下面系统自带的配置文件列表及其作用:
| 配置文件名 | 描述 |
|---|---|
| app.php | 应用配置 |
| cache.php | 缓存配置 |
| console.php | 控制台配置 |
| cookie.php | Cookie配置 |
| database.php | 数据库配置 |
| filesystem.php | 磁盘配置 |
| lang.php | 多语言配置 |
| log.php | 日志配置 |
| middleware.php | 中间件配置 |
| route.php | 路由和URL配置 |
| session.php | Session配置 |
| trace.php | 页面Trace配置 |
| view.php | 视图配置 |
具体的配置参数及默认值可以直接查看应用config目录下面的相关文件内容。
2、应用目录获取
单应用和多应用模式会影响一些系统路径的值,为了更好的理解本手册的内容,你可能需要理解下面几个系统路径所表示的位置。
| 目录位置 | 目录说明 | 获取方法(助手函数) |
|---|---|---|
| 根目录 | 项目所在的目录,默认自动获取,可以在入口文件实例化App类的时候传入。 | root_path() |
| 基础目录 | 根目录下的app目录 | base_path() |
| 应用目录 | 当前应用所在的目录,如果是单应用模式则同基础目录,如果是多应用模式,则是app/应用子目录 | app_path() |
| 配置目录 | 根目录下的config目录 | config_path() |
| 运行时目录 | 框架运行时的目录,单应用模式就是根目录的runtime目录,多应用模式为runtime/应用子目录 | runtime_path() |
3、系统内置绑定到容器中的类库包括
| 系统类库 | 容器绑定标识 |
|---|---|
| think\App | app |
| think\Cache | cache |
| think\Config | config |
| think\Cookie | cookie |
| think\Console | console |
| think\Db | db |
| think\Debug | debug |
| think\Env | env |
| think\Event | event |
| think\Http | http |
| think\Lang | lang |
| think\Log | log |
| think\Middleware | middleware |
| think\Request | request |
| think\Response | response |
| think\Filesystem | filesystem |
| think\Route | route |
| think\Session | session |
| think\Validate | validate |
| think\View | view |
使用app助手函数进行容器中的类解析调用,对于已经绑定的类标识,会自动快速实例化
$cache = app('cache');
4、内置服务
为了更好的完成核心组件的单元测试,框架内置了一些系统服务类,主要都是用于核心类的依赖注入,包括ModelService、PaginatorService和ValidateService类。这些服务不需要注册,并且也不能卸载。
5、核心Facade类库
系统给内置的常用类库定义了Facade类库,包括:
| 动态)类库 | Facade类 |
|---|---|
| think\App | think\facade\App |
| think\Cache | think\facade\Cache |
| think\Config | think\facade\Config |
| think\Cookie | think\facade\Cookie |
| think\Db | think\facade\Db |
| think\Env | think\facade\Env |
| think\Event | think\facade\Event |
| think\Filesystem | think\facade\Filesystem |
| think\Lang | think\facade\Lang |
| think\Log | think\facade\Log |
| think\Middleware | think\facade\Middleware |
| think\Request | think\facade\Request |
| think\Route | think\facade\Route |
| think\Session | think\facade\Session |
| think\Validate | think\facade\Validate |
| think\View | think\facade\View |
所以你无需进行实例化就可以很方便的进行方法调用,例如:
use think\facade\Cache;Cache::set('name','value');
echo Cache::get('name');
6、内置中间件
新版内置了几个系统中间件,包括:
| 中间件类 | 描述 |
|---|---|
| think\middleware\AllowCrossDomain | 跨域请求支持 |
| think\middleware\CheckRequestCache | 请求缓存 |
| think\middleware\LoadLangPack | 多语言加载 |
| think\middleware\SessionInit | Session初始化 |
| think\middleware\FormTokenCheck | 表单令牌 |
这些内置中间件默认都没有定义,你可以在应用的middleware.php文件中、路由或者控制器中定义这些中间件,如果不需要使用的话,取消定义即可。
7、内置事件
内置的系统事件包括:
| 事件 | 描述 | 参数 |
|---|---|---|
| AppInit | 应用初始化标签位 | 无 |
| HttpRun | 应用开始标签位 | 无 |
| HttpEnd | 应用结束标签位 | 当前响应对象实例 |
| LogWrite | 日志write方法标签位 | 当前写入的日志信息 |
| RouteLoaded | 路由加载完成 | 无 |
| LogRecord | 日志记录V6.0.8+ | 无 |
AppInit事件定义必须在全局事件定义文件中定义,其它事件支持在应用的事件定义文件中定义。
原来5.1的一些行为标签已经废弃,所有取消的标签都可以使用中间件更好的替代。可以把中间件看成处理请求以及响应输出相关的特殊事件。事实上,中间件的handler方法只是具有特殊的参数以及返回值而已。
数据库操作的回调也称为查询事件,是针对数据库的CURD操作而设计的回调方法,主要包括:
| 事件 | 描述 |
|---|---|
| before_select | select查询前回调 |
| before_find | find查询前回调 |
| after_insert | insert操作成功后回调 |
| after_update | update操作成功后回调 |
| after_delete | delete操作成功后回调 |
查询事件的参数就是当前的查询对象实例。
模型事件包含:
| 钩子 | 对应操作 |
|---|---|
| after_read | 查询后 |
| before_insert | 新增前 |
| after_insert | 新增后 |
| before_update | 更新前 |
| after_update | 更新后 |
| before_write | 写入前 |
| after_write | 写入后 |
| before_delete | 删除前 |
| after_delete | 删除后 |
before_write和after_write事件无论是新增还是更新都会执行。
模型事件方法的参数就是当前的模型对象实例。
8、助手函数
系统为一些常用的操作方法封装了助手函数,便于使用,包含如下:
| 助手函数 | 描述 |
|---|---|
| abort | 中断执行并发送HTTP状态码 |
| app | 快速获取容器中的实例 支持依赖注入 |
| bind | 快速绑定对象实例 |
| cache | 缓存管理 |
| class_basename | 获取类名(不包含命名空间) |
| class_uses_recursive | 获取一个类里所有用到的trait |
| config | 获取和设置配置参数 |
| cookie | Cookie管理 |
| download | 获取\think\response\File对象实例 |
| dump | 浏览器友好的变量输出 |
| env | 获取环境变量 |
| event | 触发事件 |
| halt | 变量调试输出并中断执行 |
| input | 获取输入数据 支持默认值和过滤 |
| invoke | 调用反射执行callable 支持依赖注入 |
| json | JSON数据输出 |
| jsonp | JSONP数据输出 |
| lang | 获取语言变量值 |
| parse_name | 字符串命名风格转换 |
| redirect | 重定向输出 |
| request | 获取当前Request对象 |
| response | 实例化Response对象 |
| session | Session管理 |
| token | 生成表单令牌输出 |
| trace | 记录日志信息 |
| trait_uses_recursive | 获取一个trait里所有引用到的trait |
| url | Url生成 |
| validate | 实例化验证器 |
| view | 渲染模板输出 |
| display | 渲染内容输出 |
| xml | XML数据输出 |
| app_path | 当前应用目录 |
| base_path | 应用基础目录 |
| config_path | 应用配置目录 |
| public_path | web根目录 |
| root_path | 应用根目录 |
| runtime_path | 应用运行时目录 |
可以在应用的公共函数文件中重写上面这些助手函数。
