4.1 為什么需要配置文件
通常在框架當中很多的固定的參數,初始化參數,並不是我們直接在使用時添加,一些通用的參數,需要固定的位置存放,然后調用時到固定的地方獲取,而不是重復的定義
4.2 有哪些配置文件
慣例配置:核心框架內置的配置文件,無需更改。
應用配置:每個應用的全局配置文件(框架安裝后會生成初始的應用配置文件),有部分配置參數僅能在應用配置文件中設置。
模塊配置:每個模塊的配置文件(相同的配置參數會覆蓋應用配置),有部分配置參數模塊配置是無效的,因為已經使用過。
動態配置:主要是指在控制器或者行為中進行(動態)更改配置,該配置方式只在當次請求有效,因為不會保存到配置文件中。
4.3 配置文件在哪
Thinkphp慣例配置存放在thinkphp/convention當中,所謂的慣例配置就是thinkphp根據一些用戶慣用的配置去寫的配置項
慣例配置:核心框架內置的配置文件
應用配置:每個應用的全局配置文件
模塊配置:每個模塊的配置文件
動態配置:(代碼當中修改)主要是指在控制器或者行為中進行(動態)更改配置,該配置方式只在當次請求有效,因為不會保存到配置文件中。
4.4 系統配置文件說明
4.5 配置的格式
可以直接在相應的應用或模塊配置文件中修改或者增加配置參數,如果你要增加額外的配置文件,直接放入應用或模塊配置目錄即可(文件名小寫)。
4.5.1 數組定義
返回PHP數組的方式是默認的配置定義格式,例如:
return [ // 默認模塊名 'default_module' => 'index', // 禁止訪問模塊 'deny_module_list' => ['common'], // 默認控制器名 'default_controller' => 'Index', // 默認操作名 'default_action' => 'index' ];
配置參數名請使用小寫的形式,定義多級
'info'=>[ 'name'=>'peter', 'age'=>'18' ]
4.5.2 其他配置格式支持
默認的配置文件都是PHP數組方式,如果你需要使用其它格式的配置文件,你可以通過改變CONFIG_EXT環境變量的方式來更改配置類型。
支持的配置類型包括.ini、.xml、.json 、.yaml和 .php 在內的格式支持,配置后應用配置及模塊配置必須統一使用相同的配置類型。(了解,一般創建一種類型就可以)
4.5.3 創建一個.env格式的文件,在項目根目錄
在框架應用加載的過程當中,會首先加載.env格式的配置,會去讀取相關的配置信息(查看源碼)
Ini格式的
4.5.4 環境變量配置和使用
我們通過學習Thinkphp5環境變量的配置,來搭建出符合我們平時開發中使用的運營環境,比如說開發環境,上線環境使用的配置是不一樣的。
注意,環境變量不支持數組參數,如果需要使用數組參數可以,使用下划線分割定義配置參數
4.5.5 獲取環境變量的值可以使用下面的兩種方式獲取:
Env::get('database.username'); Env::get('database.password'); // 同時下面的方式也可以獲取 Env::get('database_username'); Env::get('database_password');
/ 獲取環境變量 如果不存在則使用默認值root Env::get('database.username','root');
注意:環境變量當中的結果是大寫的,但是獲取的時候使用小寫
4.6 配置有效性
並不是所有的配置都會有效果,某些配置在特定的文件目錄下才會有效果
下列配置參數在模塊配置中定義(包括動態配置)無效,而必須在應用配置中設置
由於架構設計原因,下面的配置只能在環境變量中修改。
4.7 配置獲取
4.7.1 使用Config類獲取
引入命名空間
use think\facade\Config;
讀取配置信息
echo Config::get('配置參數1');
讀取某個一級配置的所有配置參數
Config::get('app.');
判斷是否存在某個設置參數:
Config::has('配置參數2');
4.7.2 使用助手函數獲取
echo config('配置參數1');
支持獲取多級配置參數值,直接使用(必須從一級開始寫)
config('app.name1.name2')
4.8 動態設置
使用助手函數設置,只能在當前的請求當中有作用
config('配置文件名.配置參數','配置值');
動態設置的參數,最多支持二級
config([ 'title'=>'peter的網站', 'info'=>'簡介信息' ],'app');
4.9 配置的優先級
ThinkPHP遵循慣例重於配置的原則,系統會按照下面的順序來加載配置文件(配置的優先順序從右到左)。
會覆蓋掉之前的配置
4.10 配置文件加載原理解析(了解)
通過分析thinkphp5.1的源碼了解下框架的配置文件,是什么時候讀取到的,為什么我們能在框架當中讀取配置文件當中的內容,以及配置的優先級順序
start.php當中加載慣例配置
執行run方法
執行initialize
加載環境變量配置
加載應用配置以及模塊配置