###### 我眼中的MVC
#### MVC
MVC(即模型Model、控制器Controller、視圖View),模型用于操控?cái)?shù)據(jù)庫(kù),簡(jiǎn)化數(shù)據(jù)庫(kù)操作,控制器用代碼,通過(guò)模型類訪問(wèn)數(shù)據(jù)庫(kù)并拿到數(shù)據(jù),將其進(jìn)行處理后傳遞給視圖,視圖用于顯示網(wǎng)頁(yè),將控制器傳遞來(lái)的數(shù)據(jù)經(jīng)過(guò)html、css美化后顯示在網(wǎng)頁(yè)中。
我認(rèn)為,對(duì)于一個(gè)網(wǎng)站,核心是url(網(wǎng)址),網(wǎng)址是網(wǎng)站的靈魂,每一次的訪問(wèn),都要通過(guò)url來(lái)進(jìn)行,所以PHP拿到一個(gè)網(wǎng)址后,首先要做的就是解析url,從網(wǎng)址中解析出模塊名,控制器名和方法名,然后通過(guò)模塊名和控制器名在真實(shí)的路徑中查找到這個(gè)控制器類所在的路徑,并將其include進(jìn)來(lái),實(shí)例化后執(zhí)行方法。
綜上所述,結(jié)合上一章的TP執(zhí)行流程,我覺(jué)得必須的步驟有幾個(gè):
比如說(shuō)對(duì)于一個(gè)網(wǎng)址:www.example.com/index.php?m=Index&c=IndexController&a=index¶ms1=abc¶ms2=2
1.當(dāng)訪問(wèn)這個(gè)網(wǎng)址時(shí),首先經(jīng)過(guò)單入口文件index.php:
index.php中將引入核心文件core.php
2.core.php
1.定義所有系統(tǒng)常量,腳本執(zhí)行的所有路徑、是否是調(diào)試模式、系統(tǒng)應(yīng)用目錄、控制器類后綴名
2.引入配置文件
3.引入系統(tǒng)函數(shù)庫(kù)
4.引入系統(tǒng)核心執(zhí)行類App
5.執(zhí)行App類的run()函數(shù)
3.App類以及run函數(shù)
1.run函數(shù)
1.設(shè)置字符集
2.系統(tǒng)類映射
3.自動(dòng)加載注冊(cè)方法
4.實(shí)例化路由類:new Route()
2.App類中的其他函數(shù)就是1.中提到的設(shè)置字符集,類映射,自動(dòng)加載注冊(cè)的自定義方法
4.實(shí)例化路由
1. 實(shí)例化路由類后,會(huì)自動(dòng)執(zhí)行構(gòu)造函數(shù):
1.構(gòu)造函數(shù)會(huì)執(zhí)行URL解析函數(shù),從當(dāng)前URL中獲得模塊名,控制器名和方法名
2.解析后執(zhí)行的一個(gè)函數(shù),用于實(shí)例化控制器類,并調(diào)用解析出來(lái)的方法
2.路由類中的其他函數(shù):
1.url解析函數(shù)
2.控制器類實(shí)例化及調(diào)用函數(shù)
這樣,就把TP的執(zhí)行流程精簡(jiǎn)了?,F(xiàn)在框架的執(zhí)行流程介紹完了,接下來(lái)就要按照這個(gè)流程來(lái)寫(xiě)框架了,為了方便,我給自己的MVC框架起名為S,為了讓框架結(jié)構(gòu)更加清晰,我先創(chuàng)建出了框架的目錄結(jié)構(gòu)如下:

下一章將要介紹目錄結(jié)構(gòu)和一些準(zhǔn)備工作,將正式開(kāi)始制作框架啦~