[TOC]
# 配置项的格式
一个配置文件包含了3个部分:
* 基本信息配置。主要指如idbasePath等这些应用的基本信息,主要是一些简单的字符串。
* components配置。配置文件的主体,也是我们接下来要讲的配置项。
* params配置。主要是提供一些全局参数。
我们一般讲的配置项是指component配置项及里面的子项。 简单来讲,一个配置项采用下面的格式:
~~~
[
'class' = 'path\to\ClassName',
'propertyName' = 'propertyValue',
'on eventName' = $eventHandler,
'as behaviorName' = $behaviorConfig,
]
~~~
作为配置项:
* 配置项以数组进行组织。
* class数组元素表示将要创建的对象的完整类名。
* propertyName数组元素表示指定为propertyName属性的初始值为$propertyValue。
* oneventName数组元素表示将$eventHandler绑定到对象的eventName事件中。
* asbehaviorName数组元素表示用$behaviorConfig创建一个行为,并注入到对象中。 这里的$behaviroConfig也是一个配置项;
* 配置项可以嵌套。
其中,class元素仅在特定的情况下可以没有。就是使用配置数组的时候,其类型已经是确定的。 这往往是用于重新配置一个已经存在的对象, 或者是在创建对象时,使用了new或Yii::createObject()指定了类型。 除此以外的大多数情况class都是配置数组的必备元素:
~~~
// 使用 new 时指定了类型,配置数组中就不应再有 class 元素
$connection = new \yii\db\Connection([
'dsn' = $dsn,
'username' = $username,
'password' = $password,
]);
// 使用 Yii::createObject()时,如果第一个参数指定了类型,也不应在配置数
// 组中设定 class
$db = Yii::createObject('yii\db\Connection', [
'dsn' = 'mysql:host=127.0.0.1;dbname=demo',
'username' = 'root',
'password' = '',
'charset' = 'utf8',
]);
// 对现有的对象重新配置时,也不应在配置数组中设定 class
Yii::configure($db, [
'dsn' = 'mysql:host=127.0.0.1;dbname=demo',
'username' = 'root',
'password' = '',
'charset' ='utf8',
]);
~~~
上面的例子中,在没看到配置数组的内容前,已经可以确定对象的类型了。 这种其他情况下,配置数组中如果再有一个 class 元素来设定类型的话,就不合理了。 这种情况下,配置数组不能有 class 元素。 但除此以外的其他情况,均要求配置数组提供 class 元素,以表示要创建的对象的类型
# `on beforeRequest`
在配置文件`config/web.php`添加`on beforeRequest`事件,代码如下:
~~~php
'on beforeRequest' => function ($event) {
// 获取 Yii::$app->request->get('code') 然后使用 Model 去查询
// 跟写 action 一样的去写代码
$v1 = (true) ? 'v1' : 'v2' ;
Yii::configure(Yii::$app, [
'modules' => [
'v1' => [
'class' => "app\\modules\\{$v}\\Module",
],
],
]
);
},
'components' => [
]
~~~
注意层级关系:跟`components`同级。
- 目录
- 配置
- 简介
- 别名
- gii
- 配置项
- 模型
- 简介
- 增删改查
- AR和model
- 模型事件
- 场景
- query查询
- 增删改
- AR查询器
- 模型关系定义
- AR模型连表查询
- fields
- where拼接
- 模块
- 创建模块
- 控制器
- 表单
- 跳转
- 响应
- 验证器
- Action
- 组件
- url
- 分页
- 验证码
- 缓存
- 文件上传
- 预启动组件
- 事件
- 自定义组件
- redis
- 日志
- 行为
- cookie和session
- 基础知识
- 创建一个类
- 配置一个类
- object基类
- component组件类特性
- phpstorm无法更改php等级
- url地址美化
- 过滤器
- 请求处理
- 请求组件
- 响应组件
- header
- 用户登录
- 实现IdentityInterface接口
- 登录
- 自动检测登录
- 获取用户信息
- 访问行为追踪
- phpstorm+postman断点调试