thinkphp 5 配置講解
一、thinkphp配置類型有哪些?
1.在thinkphp中,有6種配置。即慣例配置,應(yīng)用配置、擴(kuò)展配置、模塊配置、場(chǎng)景配置、動(dòng)態(tài)配置。
2.慣例配置就是系統(tǒng)默認(rèn)的配置。
3.應(yīng)用配置就是我們自己開發(fā)創(chuàng)建的應(yīng)用單獨(dú)的配置。
4.擴(kuò)展配置主要是實(shí)現(xiàn)我們項(xiàng)目在開發(fā)過程中有一些擴(kuò)展程序用到的配置。
5.模塊配置就是我們?cè)谝粋€(gè)應(yīng)用中,每一個(gè)模塊的配置。
6.場(chǎng)景配置主要是實(shí)現(xiàn)我們?cè)诓煌拈_發(fā)環(huán)境中設(shè)置的配置。若我們?cè)诩依锩孓k公,電腦環(huán)境可能不一樣;公司里面辦公,公司的電腦環(huán)境有不一樣。
7.動(dòng)態(tài)配置在我們模塊中開發(fā)實(shí)現(xiàn)的動(dòng)態(tài)配置。如我們?cè)谀骋粋€(gè)控制器中定義數(shù)據(jù)庫(kù)的配置。
二、thinkphp配置的實(shí)現(xiàn)原理是什么樣的?
1.thinkphp實(shí)現(xiàn)這樣不同類型的配置,很大程度上面方面了我們進(jìn)行模塊化配置,增強(qiáng)了配置的靈活性。
2.thinkphp的配置加載順序主要是按照如下順序。動(dòng)態(tài)配置》》模塊配置》》擴(kuò)展配置》》應(yīng)用配置》》慣例配置
3.thinkphp實(shí)現(xiàn)配置主要是使用了php的array_merage()函數(shù)(如果兩個(gè)或更多個(gè)數(shù)組元素有相同的鍵名,則***的元素會(huì)覆蓋其他元素。)。當(dāng)我們系統(tǒng)去加載我們的配置文件時(shí),就會(huì)覆蓋前面的配置文件,因此才會(huì)實(shí)現(xiàn)上面第二步的執(zhí)行順序。
三、為什么要實(shí)現(xiàn)這樣的配置?
1.通過不同類型的配置,我們便于項(xiàng)目的配置管理。加入我們就使用框架自帶的配置,當(dāng)我們?cè)谀硞€(gè)模塊開發(fā)中,需要將數(shù)據(jù)存在另外一臺(tái)服務(wù)器的數(shù)據(jù)庫(kù)上,是不是我們的項(xiàng)目就不能實(shí)現(xiàn)了。像這種情況還很多,這只是一個(gè)簡(jiǎn)單的例子。
四、配置文件要求
在所有的配置文件中都是采用數(shù)組的方式,當(dāng)我們系統(tǒng)在加載該配置文件時(shí),都會(huì)return一個(gè)數(shù)組,這個(gè)數(shù)組就是我們的配置項(xiàng)目。我們?cè)谙到y(tǒng)中訪問配置項(xiàng),可以使用config()助手函數(shù),也可以使用config類
五、如何是實(shí)現(xiàn)這些類型的配置呢?
1.慣例配置。
慣例配置直接在框架的核心目錄下面的convention.php中,這里不做細(xì)講。
2.應(yīng)用配置。
我們?cè)趧?chuàng)建項(xiàng)目時(shí),框架會(huì)默認(rèn)在application目錄西面創(chuàng)建config.php,database.php等配置文件。我們直接在相應(yīng)的文件中進(jìn)行操作即可。下面單獨(dú)講解的主要是采用創(chuàng)建一個(gè)目錄來配置,效果都是一樣的,無非是換了個(gè)文件路徑而已。
a.定義配置文件路徑,找到項(xiàng)目入口文件,在application同級(jí)別目錄下創(chuàng)建一個(gè)config的目錄(后面配置講解都是在該目錄下面操作,下面就不單獨(dú)講解)。
- define('CONF_PATH', __DIR__.'/../config/');
接下來在該目錄下面直接創(chuàng)建配置文件即可,創(chuàng)建的文件名稱不一定局限于config,database。至于文件里面的配置項(xiàng)和convention.php配置文件的方式一致。當(dāng)我們?cè)陧?xiàng)目運(yùn)行過程中,會(huì)自動(dòng)的加載該目錄下面的配置項(xiàng)。
3.擴(kuò)展配置。擴(kuò)展配置主要是我們?cè)陂_發(fā)中用它的一些數(shù)據(jù)的擴(kuò)展使用,如我們使用郵箱,要涉及到郵箱的賬號(hào)。便可以在該目錄下面配置。我們?cè)赾onfig目錄下面創(chuàng)建一個(gè)extra目錄,在該目錄下面創(chuàng)建對(duì)應(yīng)的文件。如我在下面創(chuàng)建了email.php文件,定義如下內(nèi)容:
- <?php
- return [
- "user_emial" => "1005349393@qq.com"
- ];
在我們系統(tǒng)中加載該配置項(xiàng)。
- var_dump(config("email.user_emial")); // 在系統(tǒng)默認(rèn)中,會(huì)給我們的環(huán)境變量都加一個(gè)PHP的前綴,并且都會(huì)將配置項(xiàng)轉(zhuǎn)換為大寫。這里我們使用我們的助手函數(shù)便可直接訪問配置項(xiàng)。
4.模塊配置。這里大致講解一下即可。主要的就是在我們的模塊目錄下面創(chuàng)建對(duì)應(yīng)的config.php,database.php等文件即可。
5.場(chǎng)景配置。***這是本文的大招。場(chǎng)景配置主要是為了適應(yīng)我們不同的開發(fā)環(huán)境,例如我們?cè)诠镜沫h(huán)境和在家里面的環(huán)境配置不一致,此時(shí)我們可能需要修改很多地方,同時(shí)回到了公司又得修改過來,這樣豈不是很麻煩。
首先,我們?cè)赾onfig目錄下面的配置文件中加載一個(gè)配置項(xiàng)。
- 'app_status' => 'office', // 這里的配置項(xiàng)的值就是我們對(duì)應(yīng)的配置環(huán)境。
接下來,在我們的config目錄下面創(chuàng)建一個(gè)office.php(這里的文件名必須和上面配置項(xiàng)的值完全一致)
***,我們直接在我們的office.php配置文件中配置即可。其實(shí)在thinkphp還有個(gè)比較不錯(cuò)的功能就是.env。之前一直知道laravel有,沒主要thinkphp5,最近才發(fā)現(xiàn)。使用該功能對(duì)于開發(fā)中的配置又方便了很多了。很贊。
首先我們?cè)谖覀兊捻?xiàng)目目錄下面創(chuàng)建一個(gè).env的文件,里面配置我們的配置項(xiàng)。如下
- status= office
我們要使用的話,直接使用框架自帶的env類即可。至于更多有關(guān)env的方法直接參考開發(fā)手冊(cè)。
- 'app_status' => Env::get("status");我們將上一步場(chǎng)景配置項(xiàng)中的值設(shè)置為.env文件中的配置項(xiàng)。一定要引入ENV這個(gè)類。
通過我們的.env文件,只需要我們實(shí)現(xiàn)將一些配置文件配置好,或者將一些常用的配置文件放在.env文件中,我們就只修改這一個(gè)文件即可。
6.動(dòng)態(tài)配置。動(dòng)態(tài)配置顧名思義是隨著我們項(xiàng)目開發(fā)的需要來配置,而不是直接使用我們配置文件中的配置。下面列舉一個(gè)簡(jiǎn)單的實(shí)例。
- <?php
- namespace app\index\controller;
- use think\Controller;
- class Index extends Controller
- {
- public function index()
- {
- config("app_name", "weixin"); // 在控制器中配置一個(gè)app_name的配置項(xiàng),這里也可以使用config類來操作。
- }
- }
本節(jié)小結(jié):本文講解的配置方式主要是為了項(xiàng)目開發(fā)方便,并非一定要這樣操作,可按照個(gè)人的習(xí)慣來操作。
原文鏈接:http://www.cnblogs.com/qqblog/p/6944867.html
【本文是51CTO專欄作者“漆齊”的原創(chuàng)稿件,轉(zhuǎn)載請(qǐng)通過51CTO聯(lián)系原作者獲取授權(quán)】