php開(kāi)發(fā)屬于自己的框架(02使用框架的好處)
2023-10-11
phpphp高級(jí)程序設(shè)計(jì):模式、框架與測(cè)試,世界上最好的語(yǔ)言
PHP是一種非常優(yōu)秀的編程語(yǔ)言,廣泛應(yīng)用于Web和互聯(lián)網(wǎng)領(lǐng)域。 PHP框架會(huì)提高你的開(kāi)發(fā)效率,自己構(gòu)建自己的框架有益無(wú)害。 建議大家一起搭建這樣一個(gè)框架。 雖然是“造輪子”,但是寫(xiě)輪子的目的并不是為了造輪子而是為了熟悉造輪子的流程,總結(jié)輪子的特點(diǎn),更好的使用輪子。 。
開(kāi)發(fā)自己的框架
2. 概述框架
[01 當(dāng)前幀]:
第一個(gè)推薦的是Yii,它的設(shè)計(jì)思想和對(duì)工程實(shí)踐的支持超過(guò)了幾代人。 如果原生 PHP 是一支滑膛槍、步槍或沖鋒槍。 如果你想去打獵,帶一支步槍就足夠了,但如果你想去戰(zhàn)場(chǎng),就必須有一把自動(dòng)沖鋒槍。
php框架分享
可見(jiàn)大家都很佩服。 其實(shí)我沒(méi)用過(guò),但是很向往。 我使用過(guò)CI框架,我認(rèn)為它小巧、優(yōu)雅并且非常令人興奮。 國(guó)內(nèi)一些創(chuàng)業(yè)公司、騰云網(wǎng)絡(luò)和開(kāi)源項(xiàng)目都大量使用,而且也還不錯(cuò)。 騰云網(wǎng)絡(luò)現(xiàn)在用的是自己的框架,MVC是一定的,還有分層、工作單元和ORM。 現(xiàn)在還引入了命名空間和管理。 可以說(shuō)也是與時(shí)俱進(jìn),挺好的。
第一幀
【02 使用框架的好處】:
1)做包管理
2) 標(biāo)準(zhǔn)實(shí)現(xiàn)可以讓`xxx.php`成為歷史
3)各種依賴(lài)注入(將創(chuàng)建對(duì)象的權(quán)利交給框架)
4)ORM支持
5) 易于使用的命令行和腳手架
6)豐富的文檔和活躍的社區(qū)
說(shuō)白了就是去做
3. 開(kāi)發(fā)自己的框架
我的框架地址: ,目前是一個(gè)非常簡(jiǎn)單粗暴的PHP框架,后續(xù)會(huì)不斷更新和填充。
整體框架圖
【01整體框架】:
首先我們總結(jié)一下PHP的MVC框架的工作流程:
簡(jiǎn)單來(lái)說(shuō),它使用一個(gè)入口文件來(lái)接受請(qǐng)求、選擇路由、處理請(qǐng)求并返回結(jié)果。
當(dāng)然,幾句話(huà)概括出來(lái)的東西,其實(shí)是需要做很多工作的。 PHP框架每次接受請(qǐng)求時(shí)都會(huì)定義常量、加載配置文件和基礎(chǔ)類(lèi),根據(jù)訪(fǎng)問(wèn)的URL進(jìn)行邏輯判斷,選擇對(duì)應(yīng)的(模塊)控制器和方法,并自動(dòng)加載對(duì)應(yīng)的類(lèi)。 框架處理完請(qǐng)求后,會(huì)選擇并渲染相應(yīng)的模板文件,并以html頁(yè)面的形式返回響應(yīng)。 在處理邏輯時(shí),還應(yīng)該考慮錯(cuò)誤和異常處理。
我的.php的入口文件
【02命名空間&自動(dòng)加載】:
1)命名空間:解決類(lèi)名重復(fù)的問(wèn)題。
2)自動(dòng)加載:避免了很多,解決了類(lèi)之間的依賴(lài)關(guān)系,這樣在實(shí)例化一個(gè)類(lèi)的時(shí)候,就不用關(guān)心它所依賴(lài)的類(lèi)了,因?yàn)槭褂胷()函數(shù),它可以注冊(cè)多個(gè)函數(shù)為了替換函數(shù) 的功能,我們傳入一個(gè)名為參數(shù)的函數(shù),r 會(huì)將這個(gè)函數(shù)壓入堆棧。 當(dāng)實(shí)例化當(dāng)前路徑中找不到的類(lèi)時(shí),系統(tǒng)會(huì)將函數(shù)從棧中彈出并依次調(diào)用,直到實(shí)例化成功。
路由選擇的本質(zhì)是根據(jù)當(dāng)前定義的全局URL模式選擇合適的方法來(lái)分析傳入的URI,加載相應(yīng)的類(lèi),并實(shí)現(xiàn)相應(yīng)的方法。
路由類(lèi)
【03查看實(shí)現(xiàn)】:
訪(fǎng)問(wèn)鏈接為:,控制器為app//.php,視圖文件為app/view/.html,賦值方法()、顯示方法()繼承于父類(lèi)\core\。
整個(gè)實(shí)現(xiàn)比較簡(jiǎn)單,后續(xù)要實(shí)現(xiàn)的功能,比如安全過(guò)濾、攔截器、鉤子等后續(xù)實(shí)現(xiàn)。
控制器和視圖文件
【04模型實(shí)現(xiàn)】:
這個(gè)模型的實(shí)現(xiàn)不是很徹底,因?yàn)镾QL和相關(guān)查詢(xún)出現(xiàn)在控制器中。 標(biāo)準(zhǔn)的寫(xiě)法是寫(xiě)一個(gè)php高級(jí)程序設(shè)計(jì):模式、框架與測(cè)試,調(diào)用里面的方法,進(jìn)行數(shù)據(jù)庫(kù)相關(guān)的操作。 當(dāng)然,數(shù)據(jù)庫(kù)配置也可以通過(guò)配置類(lèi)進(jìn)行配置。
后續(xù)需要改進(jìn)的地方:
??可以打印出執(zhí)行的sql
??可支持多個(gè)數(shù)據(jù)庫(kù)的配置鏈接
??實(shí)現(xiàn)ORM網(wǎng)站開(kāi)發(fā)seo優(yōu)化,將實(shí)體的增刪改查映射到數(shù)據(jù)庫(kù)。
數(shù)據(jù)庫(kù)模型實(shí)現(xiàn)
【05 包裹管理】:
它是一個(gè)PHP第三方資源包管理器。 它很受歡迎,也在框架中實(shí)現(xiàn)。 今天我們?cè)谧灾频目蚣苤幸灿玫搅怂?。需要做以下三個(gè)任務(wù):1)下載2)安裝3)使用
1)下載:
卷曲-sS| php
下載后是.phar二進(jìn)制包
2)創(chuàng)建.json文件:
內(nèi)容如下:
.json
換成國(guó)內(nèi)的鏡像包,不然會(huì)很慢。 參考:
.json末尾添加的聲明項(xiàng)。
3)生成包含第三方類(lèi)庫(kù)的文件夾:
.phar
然后將上述代碼添加到框架的入口文件.php中即可使用第三方類(lèi)庫(kù)。
(“/.php”);
比如我這里加載的第三方輸出類(lèi)的var-就使用了它的打印函數(shù)dump()。 打印出來(lái)的結(jié)果是黑底白字的風(fēng)格,而且還支持折疊,非常不錯(cuò)。
4.寫(xiě)在最后
本文實(shí)現(xiàn)了一個(gè)非常簡(jiǎn)單,甚至粗陋的框架。 框架本身并不重要。 關(guān)鍵是要理清框架的思路,加深對(duì)Web開(kāi)發(fā)的理解,同時(shí)最好能把一些流行的技術(shù)應(yīng)用在里面。 框架未來(lái)會(huì)不斷更新和完善,期待大家分享自己的框架,加油!
拜托了伙計(jì)們