ThinkPHP5 ---基礎(chǔ)篇(配置)

ThinkPHP5 ---基礎(chǔ)篇(配置)

一扰柠、慣例配置

i. 定義配置文件 public/index.php

|

//定義配置文件目錄

define('CONF_PATH', DIR . '/../conf/') ;

|

image.png

ii. 在application同級(jí)新建目錄conf

image.png

iii. 打印當(dāng)前配置 dump(config()) ;

image.png

iv. 上述打印出來(lái)的內(nèi)容 即為thinkphp/convention.php 的內(nèi)容

image.png
image.png

二粉铐、應(yīng)用配置

i. 上述慣例配置是thinkphp框架提供的 應(yīng)用于整個(gè)框架的默認(rèn)配置 一般開發(fā)過程中 對(duì)慣例配置不做修改 防止后期的更新 維護(hù) 框架升級(jí)受到影響

ii. 應(yīng)用配置只對(duì)整個(gè)應(yīng)用有效 當(dāng)前應(yīng)用下的所有模塊

iii. 與application同級(jí)新建 conf/config.php

image.png

config.php定義之前打印的配置信息:

image.png

config.php定義之后打印的配置信息:

image.png

說(shuō)明 配置生效

iv. 原理: array_merge()

  1. index函數(shù)中打印出array_merge后的結(jié)果
image.png
image.png

同理:慣例配置(thinkphp/convention.php)相當(dāng)于 $arr1

應(yīng)用配置(conf/config.php)相當(dāng)于$arr2

Thinkphp對(duì)于多維數(shù)組 分區(qū)域的merge操作 相同的key 后面的值將之前的替換(覆蓋)

三、擴(kuò)展配置

i. 上述 可以通過應(yīng)用配置 改變默認(rèn)配置 通過應(yīng)配配置 可以滿足完成開發(fā)的需求

ii. 擴(kuò)展配置:實(shí)際項(xiàng)目開發(fā)中 配置項(xiàng)很多 緩存配置 session配置 cookie配置 若集中在一個(gè)文件中配置 文件過大 不易維護(hù) 拆分成多個(gè)文件以便于維護(hù)

iii. 在conf目錄下新建extra目錄 (conf/extra) 新建配置文件測(cè)試

  1. 如 新建文件email.php (conf/extra/email.php)
image.png
  1. 打印配置
image.png
  1. 特例 database (數(shù)據(jù)庫(kù)的配置)

a) 正常思路: conf/extra/database.php

image.png

b) 打印 配置生效

image.png

但是:實(shí)際開發(fā)中 如果項(xiàng)目不是特別大 或者說(shuō)配置項(xiàng)不是特別多 多數(shù)使用默認(rèn)配置 就不需要建立擴(kuò)展配置

幾乎所有的項(xiàng)目都需要連接數(shù)據(jù)庫(kù)操作 thinkphp允許我們將 database.php放在conf目錄下

新建配置文件 conf/database.php

image.png

打印 配置生效

image.png

c) 此處 出現(xiàn)一個(gè)配置生效優(yōu)先級(jí)的問題

慣例配置thinkphp/convention.php 有數(shù)據(jù)庫(kù)的配置信息

應(yīng)用配置 conf/config.php 有數(shù)據(jù)庫(kù)的配置信息

擴(kuò)展配置中 database.php 也有數(shù)據(jù)庫(kù)的配置信息

經(jīng)過多次merge操作 相同的key 應(yīng)用配置中的值覆蓋 慣例配置 擴(kuò)展配置覆蓋 應(yīng)用配置

類似于就近原則

優(yōu)先級(jí)(高->低) 擴(kuò)展配置>應(yīng)用配置>慣例(默認(rèn))配置

四耻矮、場(chǎng)景配置

i. 實(shí)際開發(fā)中 有很多場(chǎng)景 開發(fā)環(huán)境 測(cè)試環(huán)境 (準(zhǔn))生產(chǎn)環(huán)境 辦公室環(huán)境 家里的環(huán)境....

ii. 如 有三個(gè)場(chǎng)景 A ,B ,C 以數(shù)據(jù)庫(kù)配置為例 (不同場(chǎng)景開發(fā) 切換到不同場(chǎng)景的配置)

  1. 應(yīng)用配置文件 conf/config.php 配置’app_status’=> ‘’
image.png
  1. 在conf/下 新增場(chǎng)景配置文件 a.php ,b.php ,c.php
image.png
image.png
image.png
  1. 應(yīng)用配置文件 conf/config.php 中 ‘a(chǎn)pp_status’=>’’ 指向a|b|c 就調(diào)用哪個(gè)場(chǎng)景的配置

A:

image.png
image.png

B:

image.png
image.png

C:

image.png
image.png
  1. 總結(jié) : 需要場(chǎng)景配置的時(shí)候

a) 應(yīng)用配置文件中 conf/config.php ‘a(chǎn)pp_status’=>

b) 新建場(chǎng)景配置文件 如 conf/a.php ...

|

<?php

return [

'app_address' => 'a' ,

'database' => [

// 數(shù)據(jù)庫(kù)類型

            'type'            => 'oracle',

            // 數(shù)據(jù)庫(kù)連接DSN配置

            'dsn'             => '',

            'port'            => '1521' ,

            // 服務(wù)器地址

            'hostname'        => '127.0.0.1',

            // 數(shù)據(jù)庫(kù)名

            'database'        => 'testA',

            // 數(shù)據(jù)庫(kù)用戶名

            'username'        => 'oracle',

            // 數(shù)據(jù)庫(kù)密碼

            'password'        => 'oracle',

            // 數(shù)據(jù)庫(kù)連接端口

            'hostport'        => '',

...

|

c) 需要切換場(chǎng)景的時(shí)候 直接 應(yīng)用配置文件

conf/config.php ‘a(chǎn)pp_status’=> 指向所需要的場(chǎng)景

注意:數(shù)據(jù)庫(kù)的配置項(xiàng) 需要配置所有的 即推薦把 thinkphp/convention.php文件中 ‘database’=>所有內(nèi)容全都拷貝過來(lái) 配置 貌似是個(gè)bug

image.png

五秦躯、模塊配置

i. 之前上述配置 都屬于引應(yīng)用級(jí)別(所有模塊都有效)

ii. 模塊配置: 實(shí)現(xiàn)僅對(duì)當(dāng)前模塊配置有效

  1. 背景: 當(dāng)前有兩個(gè)模塊 admin | home
image.png
  1. 在conf下新建兩個(gè)目錄 admin|home (對(duì)應(yīng)兩個(gè)模塊 ) 目錄下分別新建config.php(此文件名 算是規(guī)定的)
image.png
image.png
image.png
  1. 分別打印出 admin|home 模塊下的配置
image.png
image.png

配置生效 僅對(duì)當(dāng)前模塊有效 模塊之間互不影響 extra擴(kuò)展配置 同理

六忆谓、動(dòng)態(tài)配置

i. 主要用于對(duì)當(dāng)前控制器或者是某個(gè)方法 動(dòng)態(tài)的配置設(shè)置

  1. 當(dāng)前控制器的配置 __construct() 構(gòu)造函數(shù)中配置 ---對(duì)整個(gè)控制器有效
image.png

分別訪問index|delete方法

image.png
image.png
  1. 在方法中的配置 ---僅對(duì)當(dāng)前方法有效
image.png

分別訪問index|delete方法

image.png
image.png

七裆装、Config類和config助手函數(shù)

i. Config類和config()作用: 對(duì)配置(慣例配置thinkphp/convention.php 應(yīng)用配置conf/config.php以及擴(kuò)展配置)的操作【has查詢是否配置 set設(shè)置 get獲取值等等】

ii. Config類在使用的時(shí)候 優(yōu)先定義命名空間 use think\Config; 或者是帶命名空間操作\think\Config::has(‘’)

config()可以直接使用

iii. Config類

image.png

iv. Config類 Config::get()

  1. get() 可傳參數(shù)string 參數(shù)名 ,string 作用域

參數(shù)為空 獲取所有配置

對(duì)應(yīng)的助手函數(shù)是 config()

a) use think\Config ;

image.png

b) $res = \think\Config::get() ;

image.png

v. 助手函數(shù) thinkphp/helper.php

a) config()

image.png

b) 開發(fā)中 推薦使用Config類 來(lái)更改配置信息 如果在入口文件或者引入helper.php之前 定義過config()函數(shù) 那么就不能再通過config()獲取的信息會(huì)有問題

c) 設(shè)置參數(shù) Config::set() ---config(‘’,’’,’’)

image.png

d) COnfig::has(‘’) --- 判斷是否配置 【參數(shù)不存在或者null都返回false】

i. 如 Config::has(‘username’) 判斷username是否存在

ii. 對(duì)應(yīng)助手函數(shù) config(‘?username’)

八、環(huán)境變量的配置和使用

i. dump($_ENV) ; 需要php.ini中 variables_order = "EGPCS"

ii. Thinkphp5中 在application同級(jí) 新建文件 .env

image.png

iii. use think\Env ; Env::get(‘’)

image.png
image.png

iv. Env::get(‘pass’,’default’) 若是pass有值 則返回值 若沒配置返回第二個(gè)參數(shù)default

image.png
image.png

v. 分組配置

image.png
image.png
image.png

vi. 配置場(chǎng)景(開發(fā)環(huán)境 生產(chǎn)環(huán)境...)

  1. .env文件 ststus=dev如dev(開發(fā)環(huán)境)|test(測(cè)試環(huán)境)|pro(生產(chǎn)環(huán)境)

  2. conf/config.php

image.png
  1. conf/dev.php 根據(jù)不同的場(chǎng)景 新建test.php |pro.php
image.png
  1. 根據(jù).env文件的配置 切換場(chǎng)景...

  2. 若是 在.env中 配置了數(shù)據(jù)庫(kù)的信息 database

a) .env

image.png

b) conf/database.php

image.png

vii. 總結(jié): 各個(gè)環(huán)境配置不同的.env 文件 切換環(huán)境的時(shí)候 只需要切換不同的.env文件即可

FAQ:

一倡缠、啟動(dòng)本地環(huán)境 查看端口占用

1.找到被占端口pid

netstat -aon|findstr "3306"

image.png

2.根據(jù)pid 查看進(jìn)程

tasklist|findstr "1880"

image.png

3.結(jié)束進(jìn)程

taskkill /f /t /im mysqld.exe

image.png

二哨免、自定義common模塊報(bào)錯(cuò):

image.png

報(bào)錯(cuò)信息:

image.png

分析:

這是thinkphp的規(guī)定 默認(rèn)common是公用模塊 存放 通用方法 不允許在URL上直接訪問

解決:

image.png
image.png

將重復(fù)性的代碼 權(quán)限 數(shù)據(jù)處理放在common模塊 簡(jiǎn)化程序

三、修改application目錄

i. 將application目錄重命名 app

ii. 修改public/index.php define(‘APP_PATH’, DIR . ‘/../app/’);

image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末昙沦,一起剝皮案震驚了整個(gè)濱河市琢唾,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌盾饮,老刑警劉巖采桃,帶你破解...
    沈念sama閱讀 211,123評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異丘损,居然都是意外死亡普办,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門徘钥,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)衔蹲,“玉大人,你說(shuō)我怎么就攤上這事呈础∮呤唬” “怎么了?”我有些...
    開封第一講書人閱讀 156,723評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵而钞,是天一觀的道長(zhǎng)沙廉。 經(jīng)常有香客問我,道長(zhǎng)臼节,這世上最難降的妖魔是什么蓝仲? 我笑而不...
    開封第一講書人閱讀 56,357評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮官疲,結(jié)果婚禮上袱结,老公的妹妹穿的比我還像新娘。我一直安慰自己途凫,他們只是感情好垢夹,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,412評(píng)論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著维费,像睡著了一般果元。 火紅的嫁衣襯著肌膚如雪促王。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,760評(píng)論 1 289
  • 那天而晒,我揣著相機(jī)與錄音蝇狼,去河邊找鬼。 笑死倡怎,一個(gè)胖子當(dāng)著我的面吹牛迅耘,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播监署,決...
    沈念sama閱讀 38,904評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼颤专,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了钠乏?” 一聲冷哼從身側(cè)響起栖秕,我...
    開封第一講書人閱讀 37,672評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎晓避,沒想到半個(gè)月后簇捍,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,118評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡俏拱,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,456評(píng)論 2 325
  • 正文 我和宋清朗相戀三年暑塑,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片彰触。...
    茶點(diǎn)故事閱讀 38,599評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡梯投,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出况毅,到底是詐尸還是另有隱情分蓖,我是刑警寧澤,帶...
    沈念sama閱讀 34,264評(píng)論 4 328
  • 正文 年R本政府宣布尔许,位于F島的核電站么鹤,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏味廊。R本人自食惡果不足惜蒸甜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,857評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望余佛。 院中可真熱鬧柠新,春花似錦、人聲如沸辉巡。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至憔恳,卻和暖如春瓤荔,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背钥组。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工输硝, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人程梦。 一個(gè)月前我還...
    沈念sama閱讀 46,286評(píng)論 2 360
  • 正文 我出身青樓点把,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親作烟。 傳聞我的和親對(duì)象是個(gè)殘疾皇子愉粤,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,465評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理砾医,服務(wù)發(fā)現(xiàn)拿撩,斷路器,智...
    卡卡羅2017閱讀 134,628評(píng)論 18 139
  • 常用配置指令說(shuō)明 1. ServerRoot:服務(wù)器的基礎(chǔ)目錄如蚜,一般來(lái)說(shuō)它將包含conf/和logs/子目錄压恒,其它...
    小僧有禮了閱讀 4,489評(píng)論 0 5
  • ThinkPHP5 ---基礎(chǔ)篇(安裝) 一、ThinkPHP簡(jiǎn)介 i. ThinkPHP是一個(gè)免費(fèi)開源 快速簡(jiǎn)單...
    donglingjiu閱讀 2,755評(píng)論 0 1
  • 配置文件Config Config文件包含:2個(gè)屬性错邦,7個(gè)方法探赫。其中2個(gè)屬性為私有靜態(tài)屬性,外部不可訪問撬呢。7個(gè)方法...
    PlusNie閱讀 8,518評(píng)論 0 1
  • 真人伦吠,圣人,閑人魂拦,都是長(zhǎng)壽之人毛仪,無(wú)論怎樣,開心就好芯勘。 春夏秋冬四季循環(huán)箱靴,其特性: 春,生荷愕。(發(fā)陳)生發(fā)的季節(jié)衡怀,忌怒...
    天行武道養(yǎng)生閣閱讀 510評(píng)論 1 7