- ThinkPHP實(shí)戰(zhàn)
- 夏磊
- 1315字
- 2020-11-28 18:26:51
2.1 配置類型
在ThinkPHP中,配置文件都是自動(dòng)加載的(也就是不用顯示require),加載順序?yàn)椋?/p>
默認(rèn)配置公共配置
模式配置
調(diào)試配置
場(chǎng)景配置
模塊配置
擴(kuò)展配置
動(dòng)態(tài)配置。
加載順序優(yōu)先級(jí)從左往右依次遞增,也就是說(shuō)“動(dòng)態(tài)配置”是最高優(yōu)先級(jí),如果左邊的配置和右邊有重復(fù),系統(tǒng)會(huì)使用右邊的值。
2.1.1 默認(rèn)配置
默認(rèn)配置是ThinkPHP“大道至簡(jiǎn),開發(fā)由我”宗旨的核心體現(xiàn),旨在減少開發(fā)者的編碼工作而設(shè)計(jì)的。默認(rèn)情況下,該配置文件路徑為ThinkPHP/Conf/convention.php,對(duì)于一個(gè)新的Web項(xiàng)目,除了數(shù)據(jù)庫(kù)配置可能要自定義之后,幾乎不需要額外的配置定義。
2.1.2 公共配置
所謂公共配置,指的是一個(gè)應(yīng)用下的所有模塊都會(huì)加載的配置文件。默認(rèn)情況下,公共配置的文件路徑為Application/Common/Conf/config.php。
2.1.3 模式配置
在第1章中介紹過模式,這里就不贅述了,舉個(gè)例子,我們?cè)诒镜亻_發(fā)代碼的環(huán)境一般是自己搭建的PHP環(huán)境(本書中為UPUPW集成環(huán)境),權(quán)限都是很開放的。但是如果項(xiàng)目部署到云服務(wù)器上可能就會(huì)運(yùn)行錯(cuò)誤了,國(guó)內(nèi)大部分云服務(wù)器都不可以本地寫文件,ThinkPHP默認(rèn)的Runtime機(jī)制就會(huì)失效。另一個(gè)例子是關(guān)于數(shù)據(jù)庫(kù)的,SAE云引擎為了數(shù)據(jù)庫(kù)的安全性,MySQL連接信息全部以常量定義,該常量是通過改變PHP環(huán)境的參數(shù)設(shè)置的,如果在本地使用該參數(shù)也會(huì)出錯(cuò),ThinkPHP沒有模式定義的時(shí)候,開發(fā)者就需要特別小心配置文件的模式了,如果不小心把本地配置上傳到服務(wù)器將會(huì)導(dǎo)致網(wǎng)站直接出錯(cuò),所以ThinkPHP推出了“運(yùn)行模式”配置。模式配置的文件路徑為Application/Common/Config/config_模式名稱.php,如Application/Common/Config/config_sae.php。
2.1.4 調(diào)試配置
Web程序在正式上線都是在本地開發(fā)調(diào)試的,有時(shí)候本地開發(fā)需要使用本地?cái)?shù)據(jù)庫(kù),服務(wù)器上需要使用線上數(shù)據(jù)庫(kù),為了避免沖突問題,ThinkPHP也定義了“調(diào)試配置”功能,可以方便地配置調(diào)試模式下的各項(xiàng)參數(shù),例如顯示頁(yè)面請(qǐng)求信息的SHOW_PAGE_TRACE參數(shù),本地開發(fā)時(shí)將其設(shè)置為true,提交到服務(wù)器時(shí)設(shè)置為false就可以實(shí)現(xiàn)開發(fā)和線上的隔離。默認(rèn)情況下,調(diào)試配置的文件路徑為Application/Common/Config/debug.php。
2.1.5 場(chǎng)景配置
試想這么一個(gè)場(chǎng)景,筆者有個(gè)項(xiàng)目需要在公司和家里都進(jìn)行開發(fā),家里安裝的是MySQL數(shù)據(jù)庫(kù),而公司安裝的是SQL Server數(shù)據(jù)庫(kù)。為了在這兩種情況下都進(jìn)行正常開發(fā),筆者需要經(jīng)常改變數(shù)據(jù)庫(kù)配置,為了解決這個(gè)問題,ThinkPHP還提供了一種“場(chǎng)景配置”,在入口文件中定義應(yīng)用場(chǎng)景,代碼如下:
define('APP_STATUS', 'company'); //公司
ThinkPHP就會(huì)自動(dòng)加載Application/Common/Conf/company.php文件。
如果在家里開發(fā),在入口文件中則可以如下定義:
define('APP_STATUS', 'home'); //家里
ThinkPHP就會(huì)自動(dòng)加載Application/Common/Conf/home.php文件。
與模式不同,場(chǎng)景只會(huì)影響配置文件的加載,而模式會(huì)影響整個(gè)應(yīng)用,例如臨時(shí)文件的寫入等。
2.1.6 模塊配置
每個(gè)模塊都會(huì)自動(dòng)加載本模塊的配置文件,默認(rèn)情況下,模塊配置的文件路徑為Application/模塊名/Conf/config.php。
每個(gè)模塊支持獨(dú)立的模式配置和場(chǎng)景配置。
2.1.7 擴(kuò)展配置
假設(shè)有這么一個(gè)Web項(xiàng)目,后臺(tái)賬戶采用配置文件方式而不是數(shù)據(jù)庫(kù)方式進(jìn)行儲(chǔ)存,按照上文的思想,需要用配置文件保存該賬號(hào)信息,但是將該數(shù)據(jù)直接寫在主配置文件中(本文默認(rèn)公共配置文件)似乎不妥(按照解耦原則,該文件已經(jīng)單獨(dú)存放),這時(shí)候可以新建一個(gè)admin_user.php文件專門用來(lái)存放后臺(tái)賬戶信息,在主配置文件中加載即可。
2.1.8 動(dòng)態(tài)配置
假設(shè)我們?cè)谥髋渲梦募信渲谜?qǐng)求超時(shí)時(shí)間為10秒,但是遇到耗時(shí)操作時(shí),10秒的時(shí)間腳本可能仍未運(yùn)行完畢(例如在瀏覽器中進(jìn)行數(shù)據(jù)庫(kù)的備份操作),這時(shí)候會(huì)導(dǎo)致腳本異常終止,有損用戶體驗(yàn),此時(shí)我們可以通過ThinkPHP的配置操作函數(shù)臨時(shí)更改超時(shí)時(shí)間,操作結(jié)束后再設(shè)置回原值。
- 深入理解Bootstrap
- Arduino開發(fā)實(shí)戰(zhàn)指南:LabVIEW卷
- Learning C++ Functional Programming
- NLTK基礎(chǔ)教程:用NLTK和Python庫(kù)構(gòu)建機(jī)器學(xué)習(xí)應(yīng)用
- C#程序設(shè)計(jì)(慕課版)
- Mastering Swift 2
- 青少年P(guān)ython編程入門
- Learning Python Design Patterns
- Web Development with MongoDB and Node(Third Edition)
- Tableau 10 Bootcamp
- 用案例學(xué)Java Web整合開發(fā)
- Django 3.0入門與實(shí)踐
- Python Machine Learning Blueprints:Intuitive data projects you can relate to
- Arduino電子設(shè)計(jì)實(shí)戰(zhàn)指南:零基礎(chǔ)篇
- Practical Predictive Analytics