<!-- 系統默認的配置文件目錄就是應用目錄(APP_PATH), 也就是默認的application下面,並分爲應用配置 (整個應用有效)和模塊配置(僅針對該模塊有效)。 --> ├─application 應用目錄 │ ├─config.php 應用配置文件 │ ├─database.php 數據庫配置文件 │ ├─route.php 路由配置文件 │ ├─index index模塊配置文件目錄 │ │ ├─config.php index模塊配置文件 │ │ └─database.php index模塊數據庫配置文件 <!-- 若是不但願配置文件放到應用目錄下面,能夠在入口文件中定義獨立的配置目錄,添加CONF_PATH常量定義便可,以下: --> // 定義配置文件目錄和應用目錄同級 define('CONF_PATH', __DIR__.'/../config/'); // 擴展配置目錄 <!-- 5.0.1開始增長了擴展配置目錄的概念,在應用配置 目錄或者模塊配置目錄下面增長extra子目錄,下面 的配置文件都會自動加載,無需任何配置。 --> <!-- 若是你定義了CONF_PATH常量爲config目錄爲例, 擴展配置目錄以下: --> ├─application 應用目錄 ├─config 配置目錄 │ ├─config.php 應用配置文件 │ ├─database.php 數據庫配置文件 │ ├─route.php 路由配置文件 │ ├─extra 應用擴展配置目錄 │ ├─index index模塊配置文件目錄 │ │ ├─extra index模塊擴展配置目錄 │ │ ├─config.php index模塊配置文件 │ │ └─database.php index模塊數據庫配置文件 <!-- 擴展配置文件的文件名(不含後綴)就是配置參數名,而且會和應用配置文件中的參數進行合併。 -->
配置參數名不區分大小寫(由於不管大小寫定義都會轉換成小寫),新版的建議是使用小寫定義配置參數的規範。php
// 數組 項目配置文件 return [ // 默認模塊名 'default_module' => 'index', // 默認控制器名 'default_controller' => 'Index', // 默認操做名 'default_action' => 'index', //更多配置參數 //... ]; // 二維數組 項目配置文件 return [ 'cache' => [ 'type' => 'File', 'path' => CACHE_PATH, 'prefix' => '', 'expire' => 0, ], ];
其餘配置格式支持mysql
默認方式爲PHP數組方式定義配置文件,你能夠在入口文件定義CONF_EXT常量來更改成其它的配置類型:laravel
// 更改配置格式爲ini格式
define('CONF_EXT', '.ini');sql
<!--ini格式配置示例:--> default_module=Index ;默認模塊 default_controller=index ;默認控制器 default_action=index ;默認操做 <!--xml格式配置示例:--> <config> <default_module>Index</default_module> <default_controller>index</default_controller> <default_action>index</default_action> </config> <!--json格式配置示例:--> { "default_module":"Index", "default_controller":"index", "default_action":"index" }
二級配置thinkphp
配置參數支持二級,例如,下面是一個二級配置的設置和讀取示例:數據庫
$config = [ 'user' => [ 'type' => 1, 'name' => 'thinkphp', ], 'db' => [ 'type' => 'mysql', 'user' => 'root', 'password' => '', ], ]; // 設置配置參數 Config::set($config); // 讀取二級配置參數 echo Config::get('user.type'); // 或者使用助手函數 echo config('user.type');
系統不支持二級以上的配置參數讀取,須要手動分步驟讀取。
有做用域的狀況下,仍然支持二級配置的操做。json
慣例配置-》應用配置-》擴展配置-》場景配置-》模塊配置-》動態配置
Config::set('配置參數','配置值'); // 或者使用助手函數 config('配置參數','配置值'); // 批量設置 Config::set([ '配置參數1'=>'配置值', '配置參數2'=>'配置值' ]); // 或者使用助手函數 config([ '配置參數1'=>'配置值', '配置參數2'=>'配置值' ]);
配置文件支持分離(也稱爲擴展配置),只須要在公共配置文件配置extra_config_list參數(V5.0.1版本已經廢除該寫法)。數組
例如,不使用獨立配置文件的話,數據庫配置信息應該是在config.php中配置以下: /* 數據庫設置 */ 'database' => [ // 數據庫類型 'type' => 'mysql', // 服務器地址 'hostname' => '127.0.0.1', // 數據庫名 'database' => 'thinkphp', // 數據庫用戶名 'username' => 'root', // 數據庫密碼 'password' => '', // 數據庫鏈接端口 'hostport' => '', // 數據庫鏈接參數 'params' => [], // 數據庫編碼默認採用utf8 'charset' => 'utf8', // 數據庫表前綴 'prefix' => '', // 數據庫調試模式 'debug' => false, ], 若是須要使用獨立配置文件的話,則首先在config.php中添加配置: 'extra_config_list' => ['database'], 定義以後,數據庫配置就能夠獨立使用database.php文件,配置內容以下: /* 數據庫設置 */ return [ // 數據庫類型 'type' => 'mysql', // 服務器地址 'hostname' => '127.0.0.1', // 數據庫名 'database' => 'thinkphp', // 數據庫用戶名 'username' => 'root', // 數據庫密碼 'password' => '', // 數據庫鏈接端口 'hostport' => '', // 數據庫鏈接參數 'params' => [], // 數據庫編碼默認採用utf8 'charset' => 'utf8', // 數據庫表前綴 'prefix' => '', // 數據庫調試模式 'debug' => false, ], 若是配置了extra_config_list參數,並同時在config.php和database.php文件中都配置的話,則database.php文件的配置會覆蓋config.php中的設置。 獨立配置文件的參數獲取都是二維配置方式,例如,要獲取database獨立配置文件的type參數,應該是: Config::get('database.type'); 要獲取完整的獨立配置文件的參數,則使用: Config::get('database');
環境變量配置,在此框架中.env的用法與laravel的環境變量配置相同 ThinkPHP5.0支持使用環境變量配置。 在開發過程當中,能夠在應用根目錄下面的.env來模擬環境變量配置,.env文件中的配置參數定義格式採用ini方式,例如: app_debug = true app_trace = true 若是你的部署環境單獨配置了環境變量,那麼請刪除.env配置文件,避免衝突。 環境變量配置的參數會所有轉換爲大寫,值爲 null,no 和 false 等效於 "",值爲 yes 和 true 等效於 "1"。 ThinkPHP5.0默認的環境變量前綴是PHP_,也能夠經過改變ENV_PREFIX常量來從新設置。 注意,環境變量不支持數組參數,若是須要使用數組參數能夠,使用下劃線分割定義配置參數名: database_username = root database_password = 123456 或者使用 [database] username = root password = 123456 獲取環境變量的值可使用下面的兩種方式獲取: Env::get('database.username'); Env::get('database.password'); // 同時下面的方式也能夠獲取 Env::get('database_username'); Env::get('database_password'); 能夠支持默認值,例如: // 獲取環境變量 若是不存在則使用默認值root Env::get('database.username','root'); 能夠直接在應用配置中使用環境變量,例如: return [ 'hostname' => Env::get('hostname','127.0.0.1'), ]; 環境變量中設置的app_debug和app_trace參數會自動生效(優先於應用的配置文件),其它參數則必須經過Env::get方法才能讀取。