一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

THINKPHP5(TP5)新手入門必看教程

 碼農書館 2022-04-29

THINKPHP5是一個很好的PHP框架,簡稱TP5,如果你會PHP,可以很容易的掌握這個框架,針對于想要學習tp5的同學,我們簡單對TP5的安裝和配置,及文件結構做一下介紹。

 

 

安裝配置

官網下載TP5完整版(初學者學習用的)
解壓到本地的開發(fā)環(huán)境phpstudy中,默認的入口文件是public,訪問public會看到TP5成功頁面。

目錄介紹

image.png

一般開發(fā)中,代碼都是寫在application這個文件夾中

開發(fā)一個項目的時候,通常分為前臺和后臺,前臺一般放在index模塊中,后臺一般放在admin模塊中。

image.png

也可以自己新建一個模塊

模塊內部,都遵循著MVC架構

image.png

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

下面對application文件夾中的文件做一些介紹;

image.png

image.png

command.php    命令行啟動TP5框架需要讀取的文件
common.php    常用的函數(shù),都寫在這個文件中
config.php    配置文件,開啟什么,關閉什么,都在這設置
database.php    連接數(shù)據(jù)庫時候讀取的文件,比如用戶名
route.php    路由文件,美化url的
tags.php    擴展框架的時候用到

image.png

下載的第三方庫都放在這里

image.png

入口文件

static    這里放的是css、html之類的靜態(tài)文件
favicon.ico    這個是網站圖標,在標簽欄顯示的
index.php    網站入口文件,所有的請求都會經過這里
robots.txt    禁止搜索引擎爬取頁面的設置
router.php    在沒有部署網站環(huán)境的情況下,配置這個文件可以讓網站運行

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

目錄    只是小寫字母和下劃線構成
類的文件名以命名空間定義,并且命名空間和類庫文件所在路徑一致。
類的文件采用駝峰,并且首字母大寫,其余文件為小寫加下劃線。
類名和類文件名保持一致,采用駝峰命名,首字母大寫。
函數(shù)使用駝峰命名,首字母小寫。
屬性名采用駝峰,首字母小寫
以雙下劃線開頭的函數(shù)或方法為魔術方法。
常量以大寫字母和下劃線命名
表和字段必須以小寫字母和下劃線命名方式,不能以下劃線開頭。

模塊設計

image.png

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

可以自己創(chuàng)建common模塊,然后里面寫一些其他模塊會常用的控制器,或者其他模塊依賴的控制器,讓他們繼承。

image.png

image.png

慣例配置與應用配置與擴展配置

所謂應用位置,就是對app文件夾中文件都起作用的配置。

image.png

定義配置文件路徑

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

image.png

image.png

如果項目比較大,配置信息也就多,放在一個配置文件中不合適,所以就有了擴展配置。優(yōu)先級是擴展配置會覆蓋conf/config.php配置,會覆蓋TP5慣例配置。另外,擴展配置文件夾必須叫做extra文件夾,同時TP5為了人性化,允許與conf/config.php同級創(chuàng)建database.php,但是,這個database.php是屬于extra擴展配置的,擁有擴展配置的優(yōu)先級覆蓋。

場景切換配置

在慣例配置中,有'app_statues'參數(shù),默認為空,但是可以在應用配置conf/config.php中設置該參數(shù)的值為場景名稱,然后再創(chuàng)建該場景名稱的配置文件,在里面寫入想配置的參數(shù)就可以了。只要想切換場景,就修改conf/config.php這個應用配置文件中'app_status'的值即可。

image.png

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

在conf/config.php中,只要調整'app_status'的值為home,那么就會調用conf/home.php中的配置。

image.png

應用配置實例

不過,由于TP5的BUG,必須要在conf/home.php中將完整的database.php中的代碼復制過來,否則,修改完一處參數(shù)后,整個應用配置只有修改后的這個參數(shù),原來的database.php中的其他參數(shù)就默認沒有了。

以上內容的配置,都是對整個應用起作用的,針對模塊的單獨的配置,下面會有。

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

image.png

模塊配置

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

而動態(tài)配置,指的就是在控制器中進行配置,或者在控制器的方法中進行配置。說的再直白點,就是在類中用構造方法配合config()函數(shù)進行配置,這種配置,對整個類都有作用。若想對指定方法配置,那么就在那個方法中用config()函數(shù)進行配置就可以了。

image.png

image.png

我上面只是在方法中沒有輸出config()配置罷了,不然只要訪問方法,就可以看到。

環(huán)境配置

環(huán)境配置結合場景配置,先在根目錄創(chuàng)建.env文件,然后在應用配置的config文件中利用 think\Env 這個類中的 Env::get()函數(shù)獲取.env文件中的值,來對場景進行選擇。這樣就不用修改場景,只需要修改.env中的配置的值就可以了。

綁定入口文件

綁定入口文件之后,就可以直接加控制器和方法來訪問了,如果綁定了控制器,那么只要輸入方法就可以了。

image.png

綁定入口文件

通常用于接口使用,比如讓第三方接入的時候,不希望第三方訪問我們的index模塊或者admin模塊,那么就用這個綁定入口文件來解決。

另外,一旦進行了入口文件的綁定,比如我上面綁定了index,那么我也無法訪問admin模塊下的頁面了。只能訪問index模塊中的頁面

image.png

api的應用

路由

若要使用路由,那么首先要開啟路由,在convention.php文件中默認開啟路由。
不過,因為要用到我們的app中,所以需要將開啟語句復制到conf/config.php中。

image.png

開啟路由

一旦設置好路由的規(guī)則后并且開啟了url_route_must=true,那么訪問原來的index/Index/info/id/5就會報錯,只能訪問news/5。所以,要想原來訪問的地址也能訪問,就將url_route_must=false

image.png

info方法需要傳入形參id

這里輸出的是news/10,因為這里之前定義了index/index/info的路由為news/:id,如果沒有定義過,那么輸出就是原來的路徑,而不是路由的路徑

image.png

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

請求對象的獲取

image.png

重點是Request類的使用,以及里面的方法

實際上,可以仔細參考一下這個框架的編寫風格,感覺能學到不少編程思想。
由于上面返回的基本上都是關鍵數(shù)組,所以,如果想獲取某個返回的數(shù)組中參數(shù)的值,可以直接在方法中加上參數(shù)名。

image.png

其他獲取的一些內容

上面的param方法,會返回get,post,pathinfo這幾個的值

image.png

image.png

上圖第三個參數(shù),是用來過濾獲取到的值的,之所以是用intval,是對獲取到的值進行整數(shù)強制轉換。

推薦自己寫代碼不用助手函數(shù)input,用request類那樣的寫法,這樣代碼的可讀性更高,但是input還是要了解,因為每個人的代碼不同。

控制器中不建議使用die函數(shù),可以用return來結束。

image.png

返回對象

上面用到了Config類,但是卻忘記 use think/Config;

返回對象一般都是動態(tài)配置,因為不能保證每個控制器的返回對象都相同。

視圖和模板

image.png

控制器渲染視圖

控制器中,可以使用view()函數(shù)來將與controller同一層的view模塊中的與控制器同名的index文件夾中的與index()方法同名的intex.html渲染出來。這個是一個對應關系。Index控制器對應的是view/index文件夾

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

image.png

view()對應的路徑就是view文件夾

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

image.png

view()函數(shù)的參數(shù)不同,路徑也不同

return view('index',['email'=>'123456@qq.com','name'=>'xxx'])

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

image.png

渲染變量

要渲染的頁面,只要輸入大寫的STATAC,那么就會被下面這個view函數(shù)的第三個參數(shù)的值所替換,通俗點看就是渲染了常量。

image.png

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

不過,上面的方法還是不推薦使用,代碼可讀性不高。實際開發(fā)中,最好是繼承think\Controller,然后,使用$this->fetch()來渲染。用法和view()一樣。

image.png

推薦使用$this->fethc()

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

image.png

$this->assign()的用法

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

image.png

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

在渲染頁面的時候,TP5框架讓html頁面中用的是花括號來表示變量的,但是,這個也可以在tp5中進行修改,讓其他的符號或者其他的值來代替花括號的作用。

image.png

幾種渲染模板時候賦值的方式

image.png

賦值方法還挺多的

在配置文件中,可以設置下面這個參數(shù)的值,來全局替換某個關鍵詞為某個值

image.png

設置全局值替換

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

image.png

這幾個很常用

上面這些修改指定字符串值的方法,最神奇的使用地方就是,假如我們修改了某個文件的位置,那么只要設置指定字符串的值,就可以了,否則還得一個代碼一個代碼的進行修改。

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

image.png

輸出查看$_SERVER有哪些值

image.png

$_SERVER的值

image.png

模板獲取$_SERVER中指定的值

image.png

獲取其他的值

image.png

獲取更多的值

上面這個錯了,是獲取app的路徑,不是當前頁面的路徑

在模板中進行變量計算的時候,可以用#進行占位,之所以要占位,是因為{$email|md5}是把email這個參數(shù)傳入md5這個函數(shù)中,而有的函數(shù),有好幾個參數(shù)傳入,也有傳入的順序,所以就需要用到#來進行占位。

獲取其他的值

image.png

模板中進行變量的計算

image.png

還可以同時疊加好幾個函數(shù)

image.png

變量遇到js

下面這樣的注釋,更加安全,因為html代碼中看不到。如果用html的注釋,那么就會在前端的網頁源碼中找到

image.png

更安全的注釋

模板循環(huán)標簽

image.png

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

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

image.png

list數(shù)組

offset參數(shù)代表從數(shù)組的幾個元素開始遍歷,length參數(shù)代表遍歷的長度,mod代表對當前循環(huán)次數(shù)取余。

image.png

其他參數(shù)

image.png

foreach迭代

image.png

for循環(huán)

image.png

for在模板中的其他參數(shù)

比較標簽

image.png

比較標簽,eq和equal相等的

image.png

不相等的比較標簽

image.png

大于、小于標簽

image.png

大于等于、小于等于

image.png

image.png

條件判斷標簽

image.png

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

image.png

image.png

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

image.png

幾個常用標簽

上面的 if 標簽內部還可以用AND和OR這樣的邏輯語句

模板的布局包含和繼承

當在block中嵌套使用block的時候,就可以向下方這樣使用

image.png

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

這部分知識,主要就是include,extend,block的靈活運用。

下面可以嘗試做ThinkPHP5開發(fā)的項目來進行實戰(zhàn)了。實戰(zhàn)中再多記錄一些筆記。

    本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    国产亚洲欧美自拍中文自拍| 国产成人精品99在线观看| 亚洲内射人妻一区二区| 欧美黑人暴力猛交精品| 91精品日本在线视频| 人妻内射精品一区二区| 国产美女精品人人做人人爽| 福利一区二区视频在线| 欧美尤物在线视频91| 国产女同精品一区二区| 国产精品久久精品毛片| 色婷婷国产熟妇人妻露脸| 亚洲欧美日本国产有色| 狠色婷婷久久一区二区三区| 欧美亚洲美女资源国产| 98精品永久免费视频| 91福利视频日本免费看看| 1024你懂的在线视频| 日韩中文字幕在线不卡一区| 内用黄老外示儒术出处| 黑丝袜美女老师的小逼逼| 色婷婷人妻av毛片一区二区三区| 亚洲av熟女一区二区三区蜜桃| 国产精品蜜桃久久一区二区| 欧美日韩黑人免费观看| 国产一区日韩二区欧美| 在线观看视频日韩成人| 91偷拍裸体一区二区三区| 久久亚洲午夜精品毛片| 玩弄人妻少妇一区二区桃花| 中文字幕一区二区熟女| 不卡视频免费一区二区三区| 中文字幕日韩一区二区不卡| 欧美不卡午夜中文字幕| 免费观看一区二区三区黄片| 国产免费自拍黄片免费看| 日韩国产欧美中文字幕| 肥白女人日韩中文视频 | 国产精品欧美一区两区| 色好吊视频这里只有精| 日韩少妇人妻中文字幕|