ThinkPHP5.0框架學(xué)習(xí)

一 、 什么是php框架

php框架有助于促進(jìn)應(yīng)用開(kāi)發(fā),不但節(jié)省開(kāi)發(fā)時(shí)間,有助于建立更為穩(wěn)定的應(yīng)用,而且減少了重復(fù)代碼的開(kāi)發(fā)。

目錄結(jié)構(gòu)

初始的目錄結(jié)構(gòu)如下:

www? WEB部署目錄(或者子目錄)

├─application? ? ? ? ? 應(yīng)用目錄

│? ├─common? ? ? ? ? ? 公共模塊目錄(可以更改)

│? ├─module_name? ? ? ? 模塊目錄

│? │? ├─common.php? ? ? 模塊函數(shù)文件

│? │? ├─controller? ? ? 控制器目錄

│? │? ├─model? ? ? ? ? 模型目錄

│? │? ├─view? ? ? ? ? ? 視圖目錄

│? │? └─ ...? ? ? ? ? ? 更多類庫(kù)目錄

│? │

│? ├─command.php? ? ? ? 命令行定義文件

│? ├─common.php? ? ? ? 公共函數(shù)文件

│? └─tags.php? ? ? ? ? 應(yīng)用行為擴(kuò)展定義文件

├─config? ? ? ? ? ? ? ? 應(yīng)用配置目錄

│? ├─module_name? ? ? ? 模塊配置目錄

│? │? ├─database.php? ? 數(shù)據(jù)庫(kù)配置

│? │? ├─cache? ? ? ? ? 緩存配置

│? │? └─ ...? ? ? ? ? ?

│? │

│? ├─app.php? ? ? ? ? ? 應(yīng)用配置

│? ├─cache.php? ? ? ? ? 緩存配置

│? ├─cookie.php? ? ? ? Cookie配置

│? ├─database.php? ? ? 數(shù)據(jù)庫(kù)配置

│? ├─log.php? ? ? ? ? ? 日志配置

│? ├─session.php? ? ? ? Session配置

│? ├─template.php? ? ? 模板引擎配置

│? └─trace.php? ? ? ? ? Trace配置

├─route? ? ? ? ? ? ? ? 路由定義目錄

│? ├─route.php? ? ? ? ? 路由定義

│? └─...? ? ? ? ? ? ? ? 更多

├─public? ? ? ? ? ? ? ? WEB目錄(對(duì)外訪問(wèn)目錄)

│? ├─index.php? ? ? ? ? 入口文件

│? ├─router.php? ? ? ? 快速測(cè)試文件

│? └─.htaccess? ? ? ? ? 用于apache的重寫(xiě)

├─thinkphp? ? ? ? ? ? ? 框架系統(tǒng)目錄

│? ├─lang? ? ? ? ? ? ? 語(yǔ)言文件目錄

│? ├─library? ? ? ? ? ? 框架類庫(kù)目錄

│? │? ├─think? ? ? ? ? Think類庫(kù)包目錄

│? │? └─traits? ? ? ? ? 系統(tǒng)Trait目錄

│? │

│? ├─tpl? ? ? ? ? ? ? ? 系統(tǒng)模板目錄

│? ├─base.php? ? ? ? ? 基礎(chǔ)定義文件

│? ├─console.php? ? ? ? 控制臺(tái)入口文件

│? ├─convention.php? ? 框架慣例配置文件

│? ├─helper.php? ? ? ? 助手函數(shù)文件

│? ├─phpunit.xml? ? ? ? phpunit配置文件

│? └─start.php? ? ? ? ? 框架入口文件

├─extend? ? ? ? ? ? ? ? 擴(kuò)展類庫(kù)目錄

├─runtime? ? ? ? ? ? ? 應(yīng)用的運(yùn)行時(shí)目錄(可寫(xiě),可定制)

├─vendor? ? ? ? ? ? ? ? 第三方類庫(kù)目錄(Composer依賴庫(kù))

├─build.php? ? ? ? ? ? 自動(dòng)生成定義文件(參考)

├─composer.json? ? ? ? composer 定義文件

├─LICENSE.txt? ? ? ? ? 授權(quán)說(shuō)明文件

├─README.md? ? ? ? ? ? README 文件

├─think? ? ? ? ? ? ? ? 命令行入口文件

一、 URL訪問(wèn)

在沒(méi)有定義路由的情況下典型的URL訪問(wèn)規(guī)則是:

http://serverName/index.php(或者其它應(yīng)用入口文件)/模塊/控制器/操作/[參數(shù)名/參數(shù)值...]

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


1、目錄和文件

1. 目錄使用小寫(xiě)+下劃線;

2. 類庫(kù)、函數(shù)文件統(tǒng)一以.php為后綴;

3. 類的文件名均以命名空間定義,并且命名空間的路徑和類庫(kù)文件所在路徑一致;

4. 類名和類文件名保持一致,統(tǒng)一采用駝峰法命名(首字母大寫(xiě));

2、函數(shù)和類、屬性命名

1. 類的命名采用駝峰法(首字母大寫(xiě)),例如User、UserType,默認(rèn)不需要添加后綴,例如UserController應(yīng)該直接命名為User;

2. 函數(shù)的命名使用小寫(xiě)字母和下劃線(小寫(xiě)字母開(kāi)頭)的方式,例如get_client_ip;

3. 方法的命名使用駝峰法(首字母小寫(xiě)),例如getUserName

4. 類的命名采用駝峰法(首字母大寫(xiě)),例如User、UserType,默認(rèn)不需要添加后綴,例如UserController應(yīng)該直接命名為User;

3、常量和配置

1. 常量以大寫(xiě)字母和下劃線命名,例如APP_PATH;

2. 配置參數(shù)以小寫(xiě)字母和下劃線命名,例如url_route_on和url_convert;

4、數(shù)據(jù)表和字段

數(shù)據(jù)表和字段采用小寫(xiě)加下劃線方式命名,并注意字段名不要以下劃線開(kāi)頭,例如 think_user 表和 user_name字段,不建議使用駝峰和中文作為數(shù)據(jù)表及字段命名。

5、應(yīng)用類庫(kù)名空間規(guī)范

應(yīng)用類庫(kù)的根命名空間統(tǒng)一為app(可以設(shè)置app_namespace配置參數(shù)更改);例如:app\index\controller\Index 和app\index\model\User;

6、避免使用PHP保留字作為常量。


二、請(qǐng)求


1、請(qǐng)求信息

Request對(duì)象的作用是與客戶端交互,收集客戶端的From、Cookie、超鏈接,或者收集服務(wù)器端的環(huán)境變量。

2、獲取URL信息

3、變量獲取

變量獲取使用\thinkk\Request類的如下方法及參數(shù):

變量類型方法包括:

方法???????????????????????????????????????????????????????????????????? 含義

host????????????????????????????????????????????????????????????????????? 當(dāng)前訪問(wèn)域名或者IP

scheme???????????????????????????????????????????????????????????????? 當(dāng)前訪問(wèn)協(xié)議

port??????????????????????????????????????????????????????????????????????? 當(dāng)前訪問(wèn)的端口

remotePort??????????????????????????????????????????????????????????? 當(dāng)前請(qǐng)求的REMOTE_PORT

protocol????????????????????????????????????????????????????????????????? 當(dāng)前請(qǐng)求的SERVER_PROTOCOL

contentType??????????????????????????????????????????????????????????? 當(dāng)前請(qǐng)求的CONTENT_TYPE

domain??????????????????????????????????????????????????????????????????? 當(dāng)前包含協(xié)議的域名

subDomain????????????????????????????????????????????????????????????? 當(dāng)前訪問(wèn)的子域名

panDomain????????????????????????????????????????????????????????????? 當(dāng)前訪問(wèn)的泛域名

rootDomain????????????????????????????????????????????????????????????? 當(dāng)前訪問(wèn)的根域名(V5.1.6+)

url??????????????????????????????????????????????????????????????????????????? 當(dāng)前完整URL

baseUrl??????????????????????????????????????????????????????????????????? 當(dāng)前URL(不含QUERY_STRING)

query?????????????????????????????????????????????????????????????????????? 當(dāng)前請(qǐng)求的QUERY_STRING參數(shù)

baseFile?????????????????????????????????????????????????????????????????? 當(dāng)前執(zhí)行的文件

rootURL?????????????????????????????????????????????????????????????????? 訪問(wèn)根地址

rootUrlURL????????????????????????????????????????????????????????????? 訪問(wèn)根目錄

pathinfo??????????????????????????????????????????????????????????????????? 當(dāng)前請(qǐng)求URL的pathinfo信息(含URL后綴)

path ??????????????????????????????????????????????????????????????????????? 請(qǐng)求URL的pathinfo信息(不含URL后綴)

ext?????????????????????????????????????????????????????????????????????????? 當(dāng)前URL的訪問(wèn)后綴

time???????????????????????????????????????????????????????????????????????? 獲取當(dāng)前請(qǐng)求的時(shí)間

type??????????????????????????????????????????????????????????????????????? 當(dāng)前請(qǐng)求的資源類型

method?????????????????????????????????????????????????????????????????? 當(dāng)前請(qǐng)求類型


三、數(shù)據(jù)庫(kù)

db助手函數(shù)默認(rèn)會(huì)每次重新連接數(shù)據(jù)庫(kù),因此應(yīng)當(dāng)盡量避免多次調(diào)用。

注意:使用db助手函數(shù)默認(rèn)每次都會(huì)重新連接數(shù)據(jù)庫(kù),而使用Db::name 或者Db::table方法的話都是單例。db函數(shù)如果需要采用相同的鏈接,可以傳入第三個(gè)參數(shù),例如:

db('user',[],false)->where('id',1)->find();

db('user',[],false)->where('status',1)->select();

上面的方式會(huì)使用同一個(gè)數(shù)據(jù)庫(kù)連接,第二個(gè)參數(shù)為數(shù)據(jù)庫(kù)連接參數(shù),留空表示采用數(shù)據(jù)庫(kù)配置文件的配置。

四、查詢數(shù)據(jù)

select()方法用于查詢數(shù)據(jù)集,如果成功,返回的是一個(gè)二維數(shù)組,如果沒(méi)有成功則返回空數(shù)組,find()方法用于查找滿足條件的第一個(gè)記錄,如果成功,返回一個(gè)一維數(shù)組,沒(méi)有滿足條件返回null。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容