MVC 模型、視圖、控制及其單入口文件的mvc的工做原理

     什麼是mvc,mvc就是模型視圖控制,模型就是model,在項目中負責數據庫相關的操做,視圖就是view ,負責頁面的展現和數據的展現,控制就是controller ,負責中間的邏輯轉換,數據的接收,輸出的處理。mvc的好處是讓項目開發可以讓代碼和頁面儘量的分解開,相互之間的關聯儘量的少。這只是一種開發方式,聽說是從java過來的,真是坑人的java啊。php

     常見的php框架基本上都屬於mvc的開發模式,例如:Yii(大讚),Ci,Tp(國產),這幾個是我用到過的,還有不少php的框架太多了,就不一一例舉了,開發模式大同小異,這裏我爲何大讚Yii 這個框架呢,由於這個框架設計的太強大了,不愧是全棧框架,像ci和tp 就是通常的框架了,功能很少。沒啥亮點,呵呵。java

     開發流程是什麼,通常在項目目錄下面有一個叫作controller的文件夾,裏面寫控制器,在和他(通常)平級的目錄view中放入視圖也就是頁面,還有一個model的目錄,放着和數據庫表相關的數據表命名的model文件 ,主要是在controller 裏面寫功能,而後使用model文件裏面提供的方法對數據庫進行增刪改查。視圖,通常是在控制器裏面直接調用,Yii就是$this->render(),CI就是$this->load->view(),TP就是$this->display();這幾個方法基本上就是直接輸出數據 而後echo出來。或者是加上第三個參數經過ob_start() ob_get_contents()這樣的方法獲取buffer 內容return 出來,再根據具體需求作處理數據庫

     什麼是單入口(index.php)php框架

單入口通常就是隻把一個文件index.php暴露出來,可以經過這個文件訪問相關的內容,這種模式的工做原理是什麼呢?其實就是經過index.php,將系統的核心文件載入進來,而後再經過核心文件裏面的路由類對,請求的內容進行解析,解析出來要訪問的Controller類和其中的方法。看不懂不要緊直接上圖;mvc

當咱們訪問deme/index.php/welcome/index框架

image

以Ci爲例:函數

     首先將這樣的一個目錄暴露出來image,可以訪問到index.php,這個時候index,php文件開始執行,打開這個文件咱們跟着代碼走image首先定義了一下環境常量,this

而後定義一些image項目目錄常量爲後面加載文件作準備,而後略過部分走到index.php的最下面設計

image這裏就開始真正的工做了開始引入系統核心文件。3d

咱們打開這個文件看看到底寫了點什麼東西,打開裏面依然是引入各類常量,配置文件,繼續走咱們看到有一行這個image

這是什麼?咱們打印出來看看image這就是那個系統核心的路由類。

繼續往下看image咱們看到有一個叫作$RTR->class 類的屬性,打印出來,咱們看到了什麼,image

看到image兩個字符串,一個是welcome,一個是index,welcome就是默認要訪問的控制器,index就是咱們要訪問的方法名稱。好了,這個時候就真正開始啓動了,這個時候先判斷文件是否存在,若是存在就引入,不存在就404,而後 $c = new Controller();如圖:

image先把要訪問的類加載,而後實例化一個,image而後再調用call_user_func_array這個函數,執行實例化對象的方法,就至關於 $welcome = new Welcome();

而後再執行 $welcome->index();

好了整個過程大概就是這個樣子,若是不懂能夠多看幾眼,體會一下,就能理解了,有機會我也寫一個簡單的mvc,單入口文件的框架,這樣可以讓你們更清楚的理解這個東西。

相關文章
相關標籤/搜索