【PHP常見面試題 PHP框架基礎-MVC框架基本工作原理】談談你對MVC的認識,介紹幾種目前比較流行的MVC框架。
一、考點
1、MVC工作原理
1)工作原理
- Model - 資料模型層:通常情況下對資料進行加工,進行一些其他的處理,與資料相關的一些操作都在 Model層 操作。
- View - 檢視層:跟使用者進行互動的一些介面上的東西。
- Controller - 控制層:用來處理業務邏輯的。
2)生活中的MVC - 飯店點餐
如:我們去飯店吃飯,吃飯之前首先得點餐,點餐需要叫 服務員(C層),一進飯店,我們會說:“服務員,給我來一份選單。” 此時服務員會遞交給我們一份 選單(V層),使用者就在這個位置進行互動,進行互動的時候會遞給我們一份選單,拿到選單的時候,我們會去跟服務員去說:“我想吃西紅柿炒雞蛋。” 這個時候,我會把資料交給服務員
- 服務員 - C層
- 選單 - V層
- 廚師 - M層
3)業務邏輯中的MVC - 使用者註冊
註冊使用者,需要一個表單(V層),表單由 C層 來呈現。首先,使用者先去 C層 ,要去註冊使用者,先將使用者的表單呈現出來,交給 V層 呈現出來,使用者去查看錶單,滿意後,把資料提交給 C層,C層 拿到提交過來的資料會做一些額外的處理(使用者名稱是否合法,密碼是否合法。。。。資料的處理),處理好後,再將資料交給 M層 ,此時 M層 會去連線資料庫,把 C層 提交過來的資料插入到資料庫中,此時資料庫會返回一個結果(即受影響行數),成功之後,M層 會把結果再返回給 C層,最終會 提示使用者註冊成功,此時 C層
2、常見MVC框架
MVC框架
- ThinkPHP
- Yii2
- 請求時使用
index.php?r=site/index
,代表請求site
模組(即 控制器)中的index方法
; - 請求
index.php?r=user/reg
,表示使用者模組下的註冊操作,用 C層 呼叫 V層; - 在
user/doreg
中處理,將資料存入 M層; - M層 去呼叫 DB;
- 請求時使用
- CI
- Yaf
- Phalcon等
3、延伸
1)單一入口的工作原理
① 工作原理
用一個處理程式檔案處理所有的HTTP請求,根據請求時的引數的不同區分不同模組和操作的請求。(如:index.php?r=user/reg
,在請求 index.php中,可以通過get接收到 r的引數,接收到引數後,可以拿到 user 和 reg ,可以 new user
,拿到物件後,去呼叫 reg()方法
)【基本原理:拿到對應的值去呼叫方法】
② 特點:訪問的永遠都是同一個入口檔案
如:無論什麼時候,訪問的都是 index.php
,只需要改變訪問的方法即可。
- 訪問使用者模組:
index.php?r=user/reg
- 訪問分類模組:
index.php?r=cate/add
- 訪問商品模組:
index.php?r=product/add
③ 優勢
- 可以進行統一的安全性檢查(所有的請求都經過
index.php
,意味著我們在呼叫模組的時候,可以在index.php
中做一些安全性的檢查,如果訪問的是不同的入口檔案,即其他的入口檔案也需要做安全性檢查,只在index.php
中訪問,則做一道安全性檢查即可,一夫當關萬夫莫開); - 集中處理程式。
④ 劣勢
- URL 不美觀(使用 URL重寫 解決);
- 處理效率會稍低。
2)模板引擎的理解
① 常用模板引擎
PHP是一種HTML內嵌式的在服務端執行的指令碼語言,但是PHP有很多可以使PHP程式碼和HTML程式碼分開的模板引擎,例如:Smarty、Twig、Haml、Liquid等
注:建議把 Smarty 詳細複習一下。
② 工作原理
模板引擎就是龐大的完善的正則表示式替換庫 如:
$smarty->assign("name", "jack")
{
$name; // 可以拿到 jack 【html程式碼實現】
}
會將整個 HTML的檔案(如:user.html) 這個模板檔案,全部都抓取出來,把裡面的字串,標籤等都抓出來,抓出來後,去分析裡面的字元,特殊的字元,如:$name
變數({$name}
),分析好一個看,是 Smarty的變數,此時用正則表示式進行替換(由於在 assign操作的時候,就是在給 Smarty 的屬性進行賦值,賦值內容為("name", "jack")
這樣的值),所以在此處直接替換成該值即可,這就是 Smarty的底層原理,它使用了正則表示式來完成,因此對於 Smarty來說,它就是一個龐大的完善的正則表示式替換庫。
二、解題方法
1、牢記MVC思想內容,至少能背出來
2、嘗試使用PHP的一個MVC框架完成一個小功能(例如:簡單的使用者管理系統,完成使用者的增刪改查即可)
3、如果還是不知道該如何下手,可以參考《Yii2框架打造完美電商平臺》課程
三、真題
框架中什麼是單一入口和多入口,單一入口的優缺點。
- 單一入口:不管訪問哪個模組都使用同一個入口檔案;
- 多入口:每個模組都有一個入口檔案(可以前端設定一個入口檔案
index.php
,後端建立一個入口檔案admin.php
,前後端的入口檔案是獨立的) - 單一入口的優點
- 可以進行統一的安全性檢查;
- 集中處理程式。
- 單一入口的缺點
- URL不美觀(URL重寫);
- 處理效率會稍低。