ThinkPHP 5.0 配置

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模塊數據庫配置文件
<!--
擴展配置文件的文件名(不含後綴)就是配置參數名,而且會和應用配置文件中的參數進行合併。
-->

配置格式

配置參數名不區分大小寫(由於不管大小寫定義都會轉換成小寫),新版的建議是使用小寫定義配置參數的規範。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


配置加載

  1. 加載順序:在ThinkPHP中,通常來講應用的配置文件是自動加載的,加載的順序是:
慣例配置-》應用配置-》擴展配置-》場景配置-》模塊配置-》動態配置
  1. 慣例配置:慣例重於配置是系統遵循的一個重要思想,框架內置有一個慣例配置文件(位於thinkphp/convention.php),按照大多數的使用對經常使用參數進行了默認配置。因此,對於應用的配置文件,每每只須要配置和慣例配置不一樣的或者新增的配置參數,若是你徹底採用默認配置,甚至能夠不須要定義任何配置文件
  2. 應用配置:應用配置文件是應用初始化的時候首先加載的公共配置文件,默認位於application/config.php。
  3. 擴展配置:擴展配置文件是由extra_config_list配置參數定義的額外的配置文件,默認會加載database和validate兩個擴展配置文件。
  4. 場景配置:不一樣的業務場景使用指定的配置文件,場景配置文件和應用配置文件config.php是同樣的定義。
  5. 模塊配置:每一個模塊會自動加載本身的配置文件(位於application/當前模塊名/config.php)。模塊還能夠支持獨立的狀態配置文件,命名規範爲:application/當前模塊名/應用狀態.php。
  6. 動態配置:
Config::set('配置參數','配置值');
// 或者使用助手函數
config('配置參數','配置值');
// 批量設置
Config::set([
    '配置參數1'=>'配置值',
    '配置參數2'=>'配置值'
]);
// 或者使用助手函數
config([
    '配置參數1'=>'配置值',
    '配置參數2'=>'配置值'
]);

讀取配置

  1. echo Config::get('配置參數1');
  2. echo config('配置參數1');
  3. dump(Config::get()); || dump(config());
  4. Config::has('配置參數2'); || config('?配置參數2');
  5. 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方法才能讀取。
相關文章
相關標籤/搜索