[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斷點調試