筆記:TP5框架完整學(xué)習(xí)筆記

安裝配置

官網(wǎng)下載TP5完整版(初學(xué)者學(xué)習(xí)用的)
解壓到本地的開(kāi)發(fā)環(huán)境phpstudy中域帐,默認(rèn)的入口文件是public作媚,訪(fǎng)問(wèn)public會(huì)看到TP5成功頁(yè)面。

目錄介紹

一般開(kāi)發(fā)中补疑,代碼都是寫(xiě)在application這個(gè)文件夾中

開(kāi)發(fā)一個(gè)項(xiàng)目的時(shí)候瘦馍,通常分為前臺(tái)和后臺(tái),前臺(tái)一般放在index模塊中腌零,后臺(tái)一般放在admin模塊中梯找。

也可以自己新建一個(gè)模塊

模塊內(nèi)部,都遵循著MVC架構(gòu)

controller益涧、model锈锤、view都可以自己在模塊中創(chuàng)建

下面對(duì)application文件夾中的文件做一些介紹;

image.png

command.php 命令行啟動(dòng)TP5框架需要讀取的文件
common.php 常用的函數(shù),都寫(xiě)在這個(gè)文件中
config.php 配置文件闲询,開(kāi)啟什么久免,關(guān)閉什么,都在這設(shè)置
database.php 連接數(shù)據(jù)庫(kù)時(shí)候讀取的文件扭弧,比如用戶(hù)名
route.php 路由文件阎姥,美化url的
tags.php 擴(kuò)展框架的時(shí)候用到

下載的第三方庫(kù)都放在這里
入口文件

static 這里放的是css、html之類(lèi)的靜態(tài)文件
favicon.ico 這個(gè)是網(wǎng)站圖標(biāo)鸽捻,在標(biāo)簽欄顯示的
index.php 網(wǎng)站入口文件呼巴,所有的請(qǐng)求都會(huì)經(jīng)過(guò)這里
robots.txt 禁止搜索引擎爬取頁(yè)面的設(shè)置
router.php 在沒(méi)有部署網(wǎng)站環(huán)境的情況下,配置這個(gè)文件可以讓網(wǎng)站運(yùn)行

開(kāi)發(fā)規(guī)范(命名規(guī)范)

目錄 只是小寫(xiě)字母和下劃線(xiàn)構(gòu)成
類(lèi)的文件名以命名空間定義御蒲,并且命名空間和類(lèi)庫(kù)文件所在路徑一致衣赶。
類(lèi)的文件采用駝峰,并且首字母大寫(xiě)删咱,其余文件為小寫(xiě)加下劃線(xiàn)屑埋。
類(lèi)名和類(lèi)文件名保持一致,采用駝峰命名痰滋,首字母大寫(xiě)摘能。
函數(shù)使用駝峰命名续崖,首字母小寫(xiě)。
屬性名采用駝峰团搞,首字母小寫(xiě)
以雙下劃線(xiàn)開(kāi)頭的函數(shù)或方法為魔術(shù)方法严望。
常量以大寫(xiě)字母和下劃線(xiàn)命名
表和字段必須以小寫(xiě)字母和下劃線(xiàn)命名方式,不能以下劃線(xiàn)開(kāi)頭逻恐。

模塊設(shè)計(jì)

自己創(chuàng)建的common模塊

可以自己創(chuàng)建common模塊像吻,然后里面寫(xiě)一些其他模塊會(huì)常用的控制器,或者其他模塊依賴(lài)的控制器复隆,讓他們繼承拨匆。

image.png

慣例配置與應(yīng)用配置與擴(kuò)展配置

所謂應(yīng)用位置,就是對(duì)app文件夾中文件都起作用的配置挽拂。

定義配置文件路徑

創(chuàng)建了配置文件后惭每,必須要在入口文件出定義配置文件的路徑,并且要將配置文件命名為config.php才可以亏栈。
通常是不允許修改TP5框架的慣例配置的台腥,這樣不安全也不規(guī)范,只要定義了應(yīng)用配置绒北,那么應(yīng)用配置文件中的配置的值會(huì)代替慣例配置中相同的配置黎侈,若是沒(méi)有相同的值,那么就會(huì)新添加應(yīng)用配置中的值闷游。(慣例配置不會(huì)遭到修改)

image.png

如果項(xiàng)目比較大峻汉,配置信息也就多,放在一個(gè)配置文件中不合適储藐,所以就有了擴(kuò)展配置俱济。優(yōu)先級(jí)是擴(kuò)展配置會(huì)覆蓋conf/config.php配置嘶是,會(huì)覆蓋TP5慣例配置钙勃。另外,擴(kuò)展配置文件夾必須叫做extra文件夾聂喇,同時(shí)TP5為了人性化辖源,允許與conf/config.php同級(jí)創(chuàng)建database.php,但是希太,這個(gè)database.php是屬于extra擴(kuò)展配置的克饶,擁有擴(kuò)展配置的優(yōu)先級(jí)覆蓋。

場(chǎng)景切換配置

在慣例配置中誊辉,有'app_statues'參數(shù)矾湃,默認(rèn)為空,但是可以在應(yīng)用配置conf/config.php中設(shè)置該參數(shù)的值為場(chǎng)景名稱(chēng)堕澄,然后再創(chuàng)建該場(chǎng)景名稱(chēng)的配置文件邀跃,在里面寫(xiě)入想配置的參數(shù)就可以了霉咨。只要想切換場(chǎng)景,就修改conf/config.php這個(gè)應(yīng)用配置文件中'app_status'的值即可拍屑。

慣例配置參數(shù)展示

在conf/config.php中途戒,只要調(diào)整'app_status'的值為home,那么就會(huì)調(diào)用conf/home.php中的配置僵驰。

應(yīng)用配置實(shí)例

不過(guò)喷斋,由于TP5的BUG,必須要在conf/home.php中將完整的database.php中的代碼復(fù)制過(guò)來(lái)蒜茴,否則星爪,修改完一處參數(shù)后,整個(gè)應(yīng)用配置只有修改后的這個(gè)參數(shù)粉私,原來(lái)的database.php中的其他參數(shù)就默認(rèn)沒(méi)有了移必。

以上內(nèi)容的配置,都是對(duì)整個(gè)應(yīng)用起作用的毡鉴,針對(duì)模塊的單獨(dú)的配置崔泵,下面會(huì)有。

模塊配置與動(dòng)態(tài)配置

模塊配置

只要像上方那樣做修改就可以了猪瞬。

而動(dòng)態(tài)配置憎瘸,指的就是在控制器中進(jìn)行配置,或者在控制器的方法中進(jìn)行配置陈瘦。說(shuō)的再直白點(diǎn)幌甘,就是在類(lèi)中用構(gòu)造方法配合config()函數(shù)進(jìn)行配置,這種配置痊项,對(duì)整個(gè)類(lèi)都有作用锅风。若想對(duì)指定方法配置,那么就在那個(gè)方法中用config()函數(shù)進(jìn)行配置就可以了鞍泉。

image.png

我上面只是在方法中沒(méi)有輸出config()配置罷了皱埠,不然只要訪(fǎng)問(wèn)方法,就可以看到咖驮。

環(huán)境配置

環(huán)境配置結(jié)合場(chǎng)景配置边器,先在根目錄創(chuàng)建.env文件,然后在應(yīng)用配置的config文件中利用 think\Env 這個(gè)類(lèi)中的 Env::get()函數(shù)獲取.env文件中的值托修,來(lái)對(duì)場(chǎng)景進(jìn)行選擇忘巧。這樣就不用修改場(chǎng)景,只需要修改.env中的配置的值就可以了睦刃。



綁定入口文件

綁定入口文件之后砚嘴,就可以直接加控制器和方法來(lái)訪(fǎng)問(wèn)了,如果綁定了控制器,那么只要輸入方法就可以了际长。

綁定入口文件

通常用于接口使用婆誓,比如讓第三方接入的時(shí)候,不希望第三方訪(fǎng)問(wèn)我們的index模塊或者admin模塊也颤,那么就用這個(gè)綁定入口文件來(lái)解決洋幻。

另外,一旦進(jìn)行了入口文件的綁定翅娶,比如我上面綁定了index文留,那么我也無(wú)法訪(fǎng)問(wèn)admin模塊下的頁(yè)面了。只能訪(fǎng)問(wèn)index模塊中的頁(yè)面

api的應(yīng)用

路由

若要使用路由竭沫,那么首先要開(kāi)啟路由燥翅,在convention.php文件中默認(rèn)開(kāi)啟路由。
不過(guò)蜕提,因?yàn)橐玫轿覀兊腶pp中森书,所以需要將開(kāi)啟語(yǔ)句復(fù)制到conf/config.php中。

開(kāi)啟路由

一旦設(shè)置好路由的規(guī)則后并且開(kāi)啟了url_route_must=true谎势,那么訪(fǎng)問(wèn)原來(lái)的index/Index/info/id/5就會(huì)報(bào)錯(cuò)凛膏,只能訪(fǎng)問(wèn)news/5。所以脏榆,要想原來(lái)訪(fǎng)問(wèn)的地址也能訪(fǎng)問(wèn)猖毫,就將url_route_must=false

info方法需要傳入形參id

這里輸出的是news/10,因?yàn)檫@里之前定義了index/index/info的路由為news/:id须喂,如果沒(méi)有定義過(guò)吁断,那么輸出就是原來(lái)的路徑,而不是路由的路徑

路由助手函數(shù)的輸出

請(qǐng)求對(duì)象的獲取

重點(diǎn)是Request類(lèi)的使用坞生,以及里面的方法

實(shí)際上仔役,可以仔細(xì)參考一下這個(gè)框架的編寫(xiě)風(fēng)格,感覺(jué)能學(xué)到不少編程思想是己。
由于上面返回的基本上都是關(guān)鍵數(shù)組又兵,所以,如果想獲取某個(gè)返回的數(shù)組中參數(shù)的值赃泡,可以直接在方法中加上參數(shù)名寒波。

其他獲取的一些內(nèi)容

上面的param方法,會(huì)返回get,post,pathinfo這幾個(gè)的值

image.png

上圖第三個(gè)參數(shù)升熊,是用來(lái)過(guò)濾獲取到的值的,之所以是用intval绸栅,是對(duì)獲取到的值進(jìn)行整數(shù)強(qiáng)制轉(zhuǎn)換级野。

推薦自己寫(xiě)代碼不用助手函數(shù)input,用request類(lèi)那樣的寫(xiě)法,這樣代碼的可讀性更高蓖柔,但是input還是要了解辰企,因?yàn)槊總€(gè)人的代碼不同。

控制器中不建議使用die函數(shù)况鸣,可以用return來(lái)結(jié)束牢贸。

返回對(duì)象

上面用到了Config類(lèi),但是卻忘記 use think/Config;

返回對(duì)象一般都是動(dòng)態(tài)配置镐捧,因?yàn)椴荒鼙WC每個(gè)控制器的返回對(duì)象都相同潜索。


視圖和模板

控制器渲染視圖

控制器中,可以使用view()函數(shù)來(lái)將與controller同一層的view模塊中的與控制器同名的index文件夾中的與index()方法同名的intex.html渲染出來(lái)懂酱。這個(gè)是一個(gè)對(duì)應(yīng)關(guān)系竹习。Index控制器對(duì)應(yīng)的是view/index文件夾

只要做到view文件夾路徑后的文件名對(duì)應(yīng)模塊名就可以了,控制器中的view()方法可以指定參數(shù)列牺。

view()對(duì)應(yīng)的路徑就是view文件夾

view('./html/index.html')函數(shù)里面?zhèn)魅脒@樣的參數(shù)整陌,代表是從入口文件進(jìn)去了,而不是像view('index')這樣代表view/index.html

view()函數(shù)的參數(shù)不同瞎领,路徑也不同
return view('index',[
'email'=>'123456@qq.com',
'name'=>'xxx'
])

類(lèi)似這樣的用法泌辫,是view()函數(shù)向指定要渲染的html頁(yè)面?zhèn)鬏斪兞縠mali和變量name的值。只需要在顯示的位置{$email}或者{$name}就可以了九默。

渲染變量

要渲染的頁(yè)面甥郑,只要輸入大寫(xiě)的STATAC,那么就會(huì)被下面這個(gè)view函數(shù)的第三個(gè)參數(shù)的值所替換荤西,通俗點(diǎn)看就是渲染了常量澜搅。

第三個(gè)參數(shù),渲染常量STATAC

不過(guò)邪锌,上面的方法還是不推薦使用勉躺,代碼可讀性不高。實(shí)際開(kāi)發(fā)中觅丰,最好是繼承think\Controller饵溅,然后,使用$this->fetch()來(lái)渲染妇萄。用法和view()一樣蜕企。

推薦使用$this->fethc()

也可以直接使用$this->assign('a','a的值')來(lái)給要渲染的頁(yè)面上的a變量賦值。

$this->assign()的用法

當(dāng)view文件夾中沒(méi)有任何要渲染的模板的時(shí)候冠句,就用到了下面這個(gè)函數(shù)
同時(shí)也比較有用的一個(gè)方法是$this->display('只顯示我這個(gè)字符串內(nèi)容')轻掩,這是只傳入一個(gè)參數(shù)的時(shí)候。

傳入兩個(gè)參數(shù)的用法

在渲染頁(yè)面的時(shí)候懦底,TP5框架讓html頁(yè)面中用的是花括號(hào)來(lái)表示變量的唇牧,但是,這個(gè)也可以在tp5中進(jìn)行修改,讓其他的符號(hào)或者其他的值來(lái)代替花括號(hào)的作用丐重。

幾種渲染模板時(shí)候賦值的方式
賦值方法還挺多的

在配置文件中腔召,可以設(shè)置下面這個(gè)參數(shù)的值,來(lái)全局替換某個(gè)關(guān)鍵詞為某個(gè)值

設(shè)置全局值替換

常用的有一些系統(tǒng)默認(rèn)設(shè)置的字符串替換:

這幾個(gè)很常用

上面這些修改指定字符串值的方法扮惦,最神奇的使用地方就是臀蛛,假如我們修改了某個(gè)文件的位置,那么只要設(shè)置指定字符串的值崖蜜,就可以了浊仆,否則還得一個(gè)代碼一個(gè)代碼的進(jìn)行修改。

先看看下面能輸出哪些值纳猪,然后理解在tp5中氧卧,模板是如何獲取這些值的

輸出查看$_SERVER有哪些值
$_SERVER的值
模板獲取$_SERVER中指定的值
獲取其他的值
獲取更多的值

上面這個(gè)錯(cuò)了,是獲取app的路徑,不是當(dāng)前頁(yè)面的路徑

在模板中進(jìn)行變量計(jì)算的時(shí)候,可以用#進(jìn)行占位氏堤,之所以要占位沙绝,是因?yàn)?code>{$email|md5}是把email這個(gè)參數(shù)傳入md5這個(gè)函數(shù)中,而有的函數(shù)鼠锈,有好幾個(gè)參數(shù)傳入闪檬,也有傳入的順序,所以就需要用到#來(lái)進(jìn)行占位。

模板中進(jìn)行變量的計(jì)算
還可以同時(shí)疊加好幾個(gè)函數(shù)
變量遇到j(luò)s

下面這樣的注釋?zhuān)影踩驗(yàn)閔tml代碼中看不到魁兼。如果用html的注釋?zhuān)敲淳蜁?huì)在前端的網(wǎng)頁(yè)源碼中找到

更安全的注釋

模板循環(huán)標(biāo)簽

循環(huán)標(biāo)簽的使用

在模板中袜腥,用{volist name="list" id="data"} {/volist}這一對(duì)標(biāo)簽來(lái)將控制器中的數(shù)組list進(jìn)行循環(huán)扯旷,上圖中會(huì)循環(huán)輸出二維數(shù)組list中全部的name值,還附帶<p>標(biāo)簽。

list數(shù)組

offset參數(shù)代表從數(shù)組的幾個(gè)元素開(kāi)始遍歷,length參數(shù)代表遍歷的長(zhǎng)度衫哥,mod代表對(duì)當(dāng)前循環(huán)次數(shù)取余。

其他參數(shù)
foreach迭代
for循環(huán)
for在模板中的其他參數(shù)

比較標(biāo)簽

比較標(biāo)簽襟锐,eq和equal相等的
不相等的比較標(biāo)簽
大于撤逢、小于標(biāo)簽
大于等于、小于等于
image.png

條件判斷標(biāo)簽

Think.get.level這里的level是get傳的參數(shù)
image.png

還有notbetween這樣的參數(shù)

幾個(gè)常用標(biāo)簽

上面的 if 標(biāo)簽內(nèi)部還可以用AND和OR這樣的邏輯語(yǔ)句

模板的布局包含和繼承

當(dāng)在block中嵌套使用block的時(shí)候粮坞,就可以向下方這樣使用

{__block__}是使用被繼承薄板中的值

這部分知識(shí)蚊荣,主要就是include,extend莫杈,block的靈活運(yùn)用互例。

下面可以嘗試做ThinkPHP5開(kāi)發(fā)的項(xiàng)目來(lái)進(jìn)行實(shí)戰(zhàn)了。實(shí)戰(zhàn)中再多記錄一些筆記姓迅。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末敲霍,一起剝皮案震驚了整個(gè)濱河市俊马,隨后出現(xiàn)的幾起案子丁存,更是在濱河造成了極大的恐慌肩杈,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,290評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件解寝,死亡現(xiàn)場(chǎng)離奇詭異扩然,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)聋伦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門(mén)夫偶,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人觉增,你說(shuō)我怎么就攤上這事兵拢。” “怎么了逾礁?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,872評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵说铃,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我嘹履,道長(zhǎng)腻扇,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,415評(píng)論 1 283
  • 正文 為了忘掉前任砾嫉,我火速辦了婚禮幼苛,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘焕刮。我一直安慰自己舶沿,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布配并。 她就那樣靜靜地躺著括荡,像睡著了一般。 火紅的嫁衣襯著肌膚如雪荐绝。 梳的紋絲不亂的頭發(fā)上一汽,一...
    開(kāi)封第一講書(shū)人閱讀 49,784評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音低滩,去河邊找鬼召夹。 笑死,一個(gè)胖子當(dāng)著我的面吹牛恕沫,可吹牛的內(nèi)容都是我干的监憎。 我是一名探鬼主播,決...
    沈念sama閱讀 38,927評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼婶溯,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼鲸阔!你這毒婦竟也來(lái)了偷霉?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,691評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤褐筛,失蹤者是張志新(化名)和其女友劉穎类少,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體渔扎,經(jīng)...
    沈念sama閱讀 44,137評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡硫狞,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評(píng)論 2 326
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了晃痴。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片残吩。...
    茶點(diǎn)故事閱讀 38,622評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖倘核,靈堂內(nèi)的尸體忽然破棺而出泣侮,到底是詐尸還是另有隱情,我是刑警寧澤紧唱,帶...
    沈念sama閱讀 34,289評(píng)論 4 329
  • 正文 年R本政府宣布活尊,位于F島的核電站,受9級(jí)特大地震影響琼蚯,放射性物質(zhì)發(fā)生泄漏酬凳。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評(píng)論 3 312
  • 文/蒙蒙 一遭庶、第九天 我趴在偏房一處隱蔽的房頂上張望宁仔。 院中可真熱鬧,春花似錦峦睡、人聲如沸翎苫。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)煎谍。三九已至,卻和暖如春龙屉,著一層夾襖步出監(jiān)牢的瞬間呐粘,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工转捕, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留作岖,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,316評(píng)論 2 360
  • 正文 我出身青樓五芝,卻偏偏與公主長(zhǎng)得像痘儡,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子枢步,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評(píng)論 2 348

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

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理沉删,服務(wù)發(fā)現(xiàn)渐尿,斷路器,智...
    卡卡羅2017閱讀 134,629評(píng)論 18 139
  • 總是以為自己特立獨(dú)行,像一只獨(dú)行俠脯倚,游歷于名山大川渔彰,殊不知嵌屎,那只是自己的世外桃源推正,獨(dú)獨(dú)區(qū)別于內(nèi)心和世間百態(tài)。 ...
    暖暖小太陽(yáng)_5eeb閱讀 242評(píng)論 0 2
  • 原來(lái)宝惰,人們是只記得別人對(duì)自己不好的地方植榕。哪怕之前你t熬心掏肺,都是你自愿的尼夺。
    輕盈如雪閱讀 176評(píng)論 0 1