關於mvc
這裡不詳細講解何為MVC模式,只是簡單介紹,關於mvc的具體信息可以去網絡上找尋,mvc模式在我理解來它將一個項目分解成三部分,分別是 Model(模型),View(視圖),Controller(控制器),這三個單詞的縮寫組合即為MVC.MVC是一種普遍的軟件敏捷開發模式,在許多 領域特別是桌面編程領域早已經得到了廣泛的應用,然而在像php一樣的腳本語言中比較難以實現,特別是幾年前在腳本語言中很難看到mvc的實現,但是今年 隨著眾多框架的湧現,mvc在各個框架中得到了初步實現,其他框架中的實現方式暫且不提,這裡只是介紹codeigniter是如何實現mvc的。
關於單一入口
單一入口指在一個網站(應用程序)中,所有的請求都是指向一個腳本文件的,例如CI中的http:\localhostindex.php,所 有對應用程序的訪問都是必須通過這個入口,正是單一入口才使得mvc模式得以實現,因為當你訪問index.php的時候,應用程序會做大量的初始化工 作,調用大量的基礎類庫,並根據index.php後面的參數加載控制器,然後加載試圖,模型等內容信息。
ci的所有文件加載都要經過控制器調用,因為控制器是CI中的超類,也就是其他的類都依附於它,所以用單一入口方式訪問CI應用程序的時候,需要在 index.php的後面加上控制器名和控制器中的方法名,如果你對於此沒有任何概念或者無法理解,可以去CI的官方網站下載它的官方文檔,然後詳細了解 它的工作方式
CI的官方文檔非常詳盡易懂,這裡描述的是文檔上所不存在的基本原理部分。
開始
或許應該先講解CI的控制器是如何工作的,CI中的一個控制器就是用戶編寫的一個類,它繼承自系統的Controller類,例如假設我們要構建一 個可以通過http:\localhostindex.phpcontrolfuncparam1param2訪 問的頁面,我們需要做哪些工作呢,首先我們要在systemapplicationcontrollers文件夾下新建一個文件 contro.php文件,這個文件即是我們要訪問的控制器類所在文件,在此文件中創建以下內容:
以下為引用的內容:
這並不是一個控制器的基本組成部分,而是包含了model和view的一個控制器例子,
首先注意控制器的類名應該是首字母大寫的,然後在類的構造函數裡應該調用父類的構造函數,之後則是func()方法,也就是url後面所帶參數的第 二個部分,這個方法帶有兩個參數,這兩個參數的值就是url的第三部分和第四部分的值,也就是單一入口的訪問方式實際是:http:\localhostindex.php控制器名方法名\方法的參數1方法的參數2 。..。..
在控制器類中每個方法代表一個頁面,也就是可以將很多類似的操作放到一個控制器中,實現對操作的統一
在上述的例子中的func()方法中的其他部分分別加載了model和view,加載model的時候加載的是在models文件夾中的 msomemodel.php文件中的MSomemodel類,這個類負責應用程序的模型部分,也就是負責數據的交換,例如數據庫的存儲。