1. 程式人生 > >ThinkPHP 5.0 配置

ThinkPHP 5.0 配置

希望 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‘);

系統不支持二級以上的配置參數讀取,需要手動分步驟讀取。
有作用域的情況下,仍然支持二級配置的操作。


配置加載

  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方法才能讀取。

ThinkPHP 5.0 配置