您好,登錄后才能下訂單哦!
如何開發(fā)自己的php框架?相信很多沒有經(jīng)驗(yàn)的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。
接收,打印參數(shù)想怎么弄。如 獲取配置文件的方法,根據(jù)傳過來的參數(shù) 構(gòu)想
1、一般都是先判斷文件是否存在。存在就該include就include,該new就new。然后做存到屬性中(做緩存)
2、主要是調(diào)用流程:都什么需要放到run方法中
1、寫入口文件(2-5步都是寫在入口文件中的)
2、定義常量(就是框架的各層級目錄,省著每次寫一大串)
//定義框架根目錄 //定義核心文件目錄路徑 //應(yīng)用目錄(包含控制器、模型等) //是否開啟調(diào)試 //如果DEBUG為true,將錯(cuò)誤顯示打開。否則不顯示
3、引入函數(shù)庫
//加載公共方法 //加載核心文件
4、自動加載
判斷要加載的類是否存在。提示:已經(jīng)存到屬性中了,其實(shí)拿這個(gè)屬性判斷。
存在返回true;
不存在就加載。提示:反斜線替換
要加載的是文件,就include。注意:這個(gè)文件從根目錄下找
不是就返回false
注意:寫完再建立lib目錄,引入路由類。測試
5、啟動框架
//調(diào)用核心文件中的run方法(我的核心文件是core/init.php)
6、路由解析三部曲
6.1、隱藏入口文件
6.2、獲取url的參數(shù)
存在,就解析
正常情況,先轉(zhuǎn)數(shù)組(方便處理),效驗(yàn)非正常情況(如:只在url上輸入了控制器,沒有輸入方法,給方法個(gè)默認(rèn)值)
處里url上的多余參數(shù)
正常情況
非正常情況,他輸入的是奇數(shù)
不存在給默認(rèn)值
6.3、返回對應(yīng)的控制器和方法(其實(shí)在6.2中存到屬性中,也算是返回了)
7、加載控制器
在run()時(shí)就要加載控制器
將路由解析出來的控制器名,拼成控制器文件的路徑。
判斷控制器文件是否存在,存在就new。不存在就拋出錯(cuò)誤
注意:這里引入了模塊的概念\app是模塊不是應(yīng)用,比成熟的框架少一層
8、返回結(jié)果
跑起來試一試,其實(shí)到這步一個(gè)建檔的框架已經(jīng)完成了,接下來的是擴(kuò)展框架
9、在控制器中連接模型類
在lib中建立個(gè)model類,用于連接數(shù)據(jù)庫
在控制器中new model類,寫sql操作數(shù)據(jù)庫
10、中寫視圖類
assign和display方法寫在初始化(core/init.php)類中。注意:先賦值,后包含模板文件
然后控制器繼承該類,進(jìn)行調(diào)用。
11、寫配置類
新建配置文件類
寫單個(gè)配置文件的方法(提示:既然他倆獲取,傳參是少不了的。2個(gè)參數(shù),配置項(xiàng),配置文件名。打印參數(shù),然后構(gòu)想)
//1、判斷配置文件是否存在,存在就include //2、判斷配置項(xiàng)是否存在,存在直接給緩存到屬性中 //3、判斷屬性中有無緩存,有就直接返回屬性中存的
寫獲取所有配置文件的方法
提示: 新建個(gè)配置文件目錄,用來放各種配置文件(如 數(shù)據(jù)庫的,路由的,日志的....)
測試:配置文件好使不
12、寫日志類
/** * 提示:用的是工廠模式的思想: * 1、讀取配置文件,獲取當(dāng)前驅(qū)動。在初始化方法中new類 * 2、在log方法中,調(diào)用不同驅(qū)動中的log方法 */
建立日志類
建立驅(qū)動目錄
建立日志的配置文件
13、使用composer:編寫json文件,自己的框架上到github上供人家使用
第1個(gè)類庫報(bào)錯(cuò)的地址:https://github.com/filp/whoops
第2個(gè)類庫酷炫的打印變量:"s
"symfony/var-dumper":"*"//更帥氣變量輸出的效果 ymfony/var-umper":"*"//更帥氣變量輸出的效果
第3個(gè)類庫數(shù)據(jù)庫的地址:http://medoo.lvtao.net/1.2/doc.php
第4個(gè)類庫模板引擎的地址:https://twig.symfony.com/doc/2.x/intro.html#installation
鏡像網(wǎng)址:https://pkg.phpcomposer.com/
注意:下圖很重要
14、使用medoo數(shù)據(jù)庫類
如果自己封裝pdo可能會有什么想象不到的漏洞,這樣我們就不如直接用現(xiàn)成的類庫加載
http://medoo.lvtao.net/
思路:先將原來繼承的pdo換成該類庫,在封裝模型控制器調(diào)用
15、模板引擎類庫
思路:修改display方法,改成類庫的,還有模板布局
剩下其余的擴(kuò)展就因人而異了,想不到的話,可能去參考成熟的框架
這里寫2個(gè)封裝好的方法
封裝post接收方法(給大家做參考思路)
封裝跳轉(zhuǎn)方法
看完上述內(nèi)容,你們掌握如何開發(fā)自己的php框架的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。