ThinkPHP 5.0 配置
阿新 • • 發佈:2018-07-18
希望 fix 初始 roo mysq 開發 大小 || 項目配置
ThinkPHP 5.0 配置
目錄
<!-- 系統默認的配置文件目錄就是應用目錄(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模塊數據庫配置文件 <!-- 擴展配置文件的文件名(不含後綴)就是配置參數名,並且會和應用配置文件中的參數進行合並。 -->
配置格式
配置參數名不區分大小寫(因為無論大小寫定義都會轉換成小寫),新版的建議是使用小寫定義配置參數的規範。
// 數組 項目配置文件 return [ // 默認模塊名 ‘default_module‘ => ‘index‘, // 默認控制器名 ‘default_controller‘ => ‘Index‘, // 默認操作名 ‘default_action‘ => ‘index‘, //更多配置參數 //... ]; // 二維數組 項目配置文件 return [ ‘cache‘ => [ ‘type‘ => ‘File‘, ‘path‘ => CACHE_PATH, ‘prefix‘ => ‘‘, ‘expire‘ => 0, ], ];
其他配置格式支持
默認方式為PHP數組方式定義配置文件,你可以在入口文件定義CONF_EXT常量來更改為其它的配置類型:
// 更改配置格式為ini格式
define(‘CONF_EXT‘, ‘.ini‘);
<!--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" }
二級配置
配置參數支持二級,例如,下面是一個二級配置的設置和讀取示例:
$config = [
‘user‘ => [
‘type‘ => 1,
‘name‘ => ‘thinkphp‘,
],
‘db‘ => [
‘type‘ => ‘mysql‘,
‘user‘ => ‘root‘,
‘password‘ => ‘‘,
],
];
// 設置配置參數
Config::set($config);
// 讀取二級配置參數
echo Config::get(‘user.type‘);
// 或者使用助手函數
echo config(‘user.type‘);
系統不支持二級以上的配置參數讀取,需要手動分步驟讀取。
有作用域的情況下,仍然支持二級配置的操作。
配置加載
- 加載順序:在ThinkPHP中,一般來說應用的配置文件是自動加載的,加載的順序是:
慣例配置-》應用配置-》擴展配置-》場景配置-》模塊配置-》動態配置
- 慣例配置:慣例重於配置是系統遵循的一個重要思想,框架內置有一個慣例配置文件(位於thinkphp/convention.php),按照大多數的使用對常用參數進行了默認配置。所以,對於應用的配置文件,往往只需要配置和慣例配置不同的或者新增的配置參數,如果你完全采用默認配置,甚至可以不需要定義任何配置文件
- 應用配置:應用配置文件是應用初始化的時候首先加載的公共配置文件,默認位於application/config.php。
- 擴展配置:擴展配置文件是由extra_config_list配置參數定義的額外的配置文件,默認會加載database和validate兩個擴展配置文件。
- 場景配置:不同的業務場景使用指定的配置文件,場景配置文件和應用配置文件config.php是一樣的定義。
- 模塊配置:每個模塊會自動加載自己的配置文件(位於application/當前模塊名/config.php)。模塊還可以支持獨立的狀態配置文件,命名規範為:application/當前模塊名/應用狀態.php。
- 動態配置:
Config::set(‘配置參數‘,‘配置值‘);
// 或者使用助手函數
config(‘配置參數‘,‘配置值‘);
// 批量設置
Config::set([
‘配置參數1‘=>‘配置值‘,
‘配置參數2‘=>‘配置值‘
]);
// 或者使用助手函數
config([
‘配置參數1‘=>‘配置值‘,
‘配置參數2‘=>‘配置值‘
]);
讀取配置
- echo Config::get(‘配置參數1‘);
- echo config(‘配置參數1‘);
- dump(Config::get()); || dump(config());
- Config::has(‘配置參數2‘); || config(‘?配置參數2‘);
- echo Config::get(‘配置參數.二級參數‘);
echo config(‘配置參數.二級參數‘);
獨立配置文件
配置文件支持分離(也稱為擴展配置),只需要在公共配置文件配置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方法才能讀取。
ThinkPHP 5.0 配置