PHP架構開發:三、MVC設計模式及本架構的實現方式

來源:互聯網
上載者:User

MVC

本教程實踐性的,對於MVC的知識只是簡略介紹,如想深入學習,請自行尋找資料。

MVC 簡單說來包括三部分:M – Model (模型) 、V – View (視圖)、C – Controller (控制器) 。看過上篇文章的朋友應該知道我們最後提到的LQP_Rewrite類中的三個屬性中有個叫:$_controllerName,沒錯這裡就是指MVC中C的名稱。MVC設計模式把應用程式的結構清晰的劃分成了三部分,因此我們的架構也用了專門的檔案夾與這三部分進行對應,在介紹前先讓我們把缺少的另外三個檔案夾建立起來:

  • 展開application檔案夾,在其下分別建立controllers、models與views檔案夾

好了,現在讓我們看一下對應關係就非常明了了:

白話說下MVC各部分的作用:

  • M:一般用於為資料庫中的表建立對應的PHP類(被稱作ORM),並提供操作資料庫的各種方法,方便C的調用,同時也使C不用考濾資料庫,更專註於處理商務邏輯(指各種流程,比如常見的購物車:選產品->下單->付款->發貨),易於代碼維護;
  • C:用於處理商務邏輯了,控制器,顧名思義用於控制,所於的使用者請求都由控制器掌控,最一般的應用就是指定視圖V,一般每個控制器可以包含多個動作(Action),每個動作對應一個視圖,控制器就是通過動作來控制視圖的;
  • V:就是用來處理顯示的了,使用者能看到的東西應該都在這裡,我們常說的“代碼與視圖分離”中的視圖與這裡的視圖是基本一致的,都是為了只顯示,方便程式員與美工配合工作,也使程式更易於理解與維護。

實現方式

本架構中,我們採用如的結構來組織MVC各部分,並定義如下常量來指定各部分的位置,

LQP_LIB_DIR :定義庫位置
PRJECT_DIR :定義項目位置
APP_CONTROLLER_DIR :定義控制器位置
APP_VIEW_DIR :定義視圖位置
APP_MODEL_DIR :定義模組位置

  • 在public下建立config檔案夾,在config下新增文lib_config.php,用於組態架構可能需要的所有配置,目前內容如下:
  • <?phpdefine('LQP_LIB_DIR', 'E:/code/projects/LoveQiPai/WWW/library');//庫位置set_include_path(LQP_LIB_DIR.";.");//設定php包含路徑?>
  • 修改public/config/config.php中的內容為如下:(註:PROJECT_DIR要修改為你的項目在你磁碟上的位置)
<?phpinclude 'lib_config.php';define('PROJECT_DIR', 'C:\Users\z\Documents\NetBeansProjects\LQP_Framework');//項目位置,TODO:修改為你項目的實際位置define('APP_CONTROLLER_DIR', PROJECT_DIR.'\application\controllers');//控制器位置define('APP_VIEW_DIR', PROJECT_DIR.'\LQP_Framework\application\views');//視圖位置define('APP_MODEL_DIR' , PROJECT_DIR.'\application\models');//models位置?>

只所以定義上面這些常量是為了對項目更多的控制權,比如,你可以把controller放在app中,而不是application中,當然你也可以使用“約定勝於配置”的方式,把APP_CONTROLLER_DIR 、APP_VIEW_DIR 及APP_MODEL_DIR 定義在你的架構代碼中。

另外,PROJECT_DIR的位置一般也可以通過當前檔案的路徑推匯出來,這個我們日後再討論。

下一節我們繼續通過分析URL來實現簡單的Controller功能,讓“代碼與設計分離”。

本節代碼:http://cid-8248e4adbf2b92f3.office.live.com/self.aspx/.Public/Lesson%203.rar

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.