配置文件優先等級
加載順序:
慣例配置->應用配置->擴展配置->場景配置->模塊配置->動配置態
優先級:
動配置態 > 模塊配置 > 場景配置 > 擴展配置 > 應用配置 > 慣例配置
從右往左,右邊配置文件 的配置會 覆蓋 左邊配置文件 的配置
一、慣例配置
路徑:thinkphp/convention.php
一般情況下,不對慣例配置進行修改!
二、應用配置
路徑:application/config.php
三、擴展配置(對配置文件分目錄管理)
1、數據庫配置
路徑:application/database.php
2、自定義擴展配置
路徑:extend目錄下,新建配置項文件
四、場景配置(不同場景,讀取不同的配置文件)
配置修改:
修改應用配置文件application/config.php中的app_status屬性值,然後在config.php同級目錄下,新建名爲‘name1’的配置文件。該配置文件可以有多個,根據不同場景,賦予app_status不同的配置屬性
// 應用模式狀態
'app_status' => 'name1',
五、模塊配置(不用模塊讀取不同配置文件)
根據應用模塊的不同(如前臺頁面模塊和後臺管理系統模塊),單獨調用不同的配置文件。
例如,在application/index目錄下,新建一個config.php文件,前臺模塊自動讀取該配置文件內的配置參數;
同理。在application/admin目錄下,新建一個config.php文件,後臺模塊自動讀取該配置文件內的配置參數。
六、動態配置(臨時性的配置)
通過config()等方法,在代碼文件中,修改配置文件的某個屬性的值:
config('name','newname');//修改配置文件的原屬性的值
七、環境變量
創建:
在根目錄下,創建 .env 文件(通過編輯器創建),書寫規範(不能使用中文)
namme='zhangsan'
age=12
//或者
[database]
type='mysql'
root='root'
調用:
通過Env類調用(可以在前面6個配置文件中,引入環境變量,通過修改環境變量,從而達到修改配置文件的效果)
use \think\Env ; //引入環境變量
// Env::get('name');
// Env::get('database.type');
//屬性不存在
//Env::get('屬性名稱','不存在屬性值');
// 數據庫類型
'type' => Env::get('database.type'),
讀取配置文件
在慣例配置文件中添加如下配置:
//自定義配置
//單個配置信息
'name' => 'zhangsan',
'age' => 30,
//數組型配置信息
'teacher' => [
'name' => 'xiaowang',
'age' => 29,
],
1、通過系統方法調取:
//單個配置屬性
$conf = config('name');
//數組配置,返回數組
$conf = config('teacher');
//返回數組配置下的某一項屬性
$conf = config('teacher.name');
2、通過系統類調用
//引用類
use \think\Config;
//調用類方法
$conf = Config::get('age');
//數組配置,返回數組
$conf = Config::get('teacher');
//返回數組配置下的某一項屬性
$conf = Config::get('teacher.name');
//或者直接調用類裏面的方法
$conf = \think\Config::get('age');
//數組配置,返回數組
$conf = \think\Config::get('teacher');
//返回數組配置下的某一項屬性
$conf = \think\Config::get('teacher.name');
3、調用擴展配置項
config('擴展文件名'.'屬性');
config('擴展文件名');//該擴展配置的所有內容
config('database.hostname');//數據庫擴展配置
config('自定義擴展配置名'.'屬性');//自定義擴展配置