程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> php框架codeigniter是如何實現mvc模式以及單一入口

php框架codeigniter是如何實現mvc模式以及單一入口

編輯:關於PHP編程

關於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文件,這個文件即是我們要訪問的控制器類所在文件,在此文件中創建以下內容:

以下為引用的內容:
1 class Controller extends Controller {
 2 
 3     function Controller()
 4     {
 5         parent::Controller();    
 6     }
 7     
 8     function func($param1,$param2)
 9     {
10  $this->load->model(MSomemodel,,TRUE);
11  $data[data1]= $this->MSomemodel->getvalue();
12            $this->load->view(welcome,$data);
13     }
14 }

這並不是一個控制器的基本組成部分,而是包含了model和view的一個控制器例子,

首先注意控制器的類名應該是首字母大寫的,然後在類的構造函數裡應該調用父類的構造函數,之後則是func()方法,也就是url後面所帶參數的第 二個部分,這個方法帶有兩個參數,這兩個參數的值就是url的第三部分和第四部分的值,也就是單一入口的訪問方式實際是:http:\localhostindex.php控制器名方法名\方法的參數1方法的參數2 。..。..

在控制器類中每個方法代表一個頁面,也就是可以將很多類似的操作放到一個控制器中,實現對操作的統一

在上述的例子中的func()方法中的其他部分分別加載了model和view,加載model的時候加載的是在models文件夾中的 msomemodel.php文件中的MSomemodel類,這個類負責應用程序的模型部分,也就是負責數據的交換,例如數據庫的存儲。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved