《PHP設計模式介紹》第十七章 MVC 模式(4)_PHP教程

      編輯Tag賺U幣
      教程Tag:暫無Tag,歡迎添加,賺取U幣!

      推薦:《PHP設計模式介紹》第十五章 表數據網關模式
      前一章中使用動態記錄模式對數據庫表進行建立,獲取,更新(通過擴展實現刪除)每一行的操作。動態記錄模式是一種簡單的抽象數據庫連接的方式,但是這種簡潔性也正是它的弱點。動態記錄類只處理

      model--view--controller程序表的“真實生活”版本看上去與上面顯示的“理想”的程序表非常相似。主要添加的是actionfactory引起每個動作,那是一個具體的命令。

      在很多我開發的MVC運行程序中,第二個調度以默認ShowViewAction進行。

      這個圖顯示了第一個調度創建了一個具體的指令ShowViewAction.這個動作反之會使用ViewFactory來創建一個具體的View類,Martin Fowlerj將的MVC關于View的PoEAA部分叫做View Helper。這個視圖可以使用你喜歡的模版引擎來選擇和解析一個模版文件,填充模版變量:從model取得數據,進而通過模版呈現結果返回給客戶端。

      這是一種可以提升MVC名譽的圖,但是實際上,這張圖的各個要素都被添加了,以滿足通過組織代碼使得維護變簡單的需要。

      總之,我發現了使用一個特定的框架最顯著的障礙就是了解一個框架是怎樣運行的以及怎樣添加有特殊用途的功能。實際的組織是典型的一次性簡單了解,但是起初在沒有上下聯系的情況下它似乎又很難理解。

      貫穿MVC的相關問題:

      似乎有很多“什么到哪里”的問題圍繞著MVC,你會從不同的MVC擁護者那里收到很多不同的答案。

      $_SESSION屬于哪里?一個爭議是說sessions是不變的數據存儲,通常是以文件形式保存在服務器上,因此最好歸入model的范疇。第二種說法就是session和其他的php superglobal一樣,session數據是輸入系統的,因此是屬于controller,另外一些開發員認為,sessions是用cookie執行的,一種工作在http上的html里的技術,所以是和view相關聯的。

      身份認證是屬于哪里?它似乎像是應用邏輯的一部分,因此是屬于model。但是如果你要限制只有通過驗證的用戶才能執行特定動作(controller的部分)呢?好,controller可以進入model,所以身份認證歸入這里似乎是個完美的劃分。但是http認證呢?它也進入到controller嗎?

      在整個概念中瀏覽器適合在哪里?很明顯是View,對嗎?如若你想通過java語言進行驗證呢?驗證不屬于controller和model碼?你怎么讓它進入View呢?

      這些爭論都沒有平息的跡象,當你在你的MVC實現中試圖找出怎么樣看待這些你關心的問題時以上每個都導致了一些挑釁的想法。

      不含MVC的框架

      很明顯不是每個框架都圍繞著嵌入在MVC模式的想法的分離上。這里是一個關于無MVC的框架想法的小例子

      事件處理

      當你在gui環境下工作時,工具一般設置成響應事件。想想button.click().一些php框架試圖采取這種為核心思想。在zend的php5編程比賽中認識了prado,它把事件處理作為核心概念。WACT使用Composite pattern來綜合controller的概念,每個都有“監聽程序”,它能接近事件處理透視圖。

      控制容器的反向

      在java圈子里的一個熱門話題就是控制容器的反向(ioc),亦稱Dependency Injection pattern。一個好的介紹這個模式的文章在 http://www.martin- fowler.com/articles/injection.html.

      這個模式結合了一個類似Pico的Dependency Injection容器和類似WACT的MVC框架,用以構建一個“autowires”自身的應用,這一模式是是與MVC正交的──這是一個我非常感興趣的領域


      結束語

      這里是一個簡短的MVC相關設計模式的導航.如果你想尋找完整的PHP下的MVC開發框架,我推薦你看Mojavi(http://www.mojavi.org/);這是一個很好的MVC示例,并且這個項目的開發很活躍,社區也比較有活力。

      這一章也許沒有能夠解決你在web架構方面的任何具體問題,希望能夠給你提供一些參考,能夠成為你展開相關研究的一個起點,或者能夠為你在編寫能為PHP開發帶來巨大變革的Magic Web Application Architecture時帶來一些靈感。

      分享:《PHP設計模式介紹》第十四章 動態記錄模式
      到目前為止,您所看到的這些設計模式大大提高了代碼的可讀性與可維護性。然而,在WEB應用設計與開發中一個基本的需求與挑戰:數據庫應用,這些設計模式都沒有涉及到。本章與接下來的兩章—

      共4頁上一頁1234下一頁
      來源:模板無憂//所屬分類:PHP教程/更新時間:2008-08-22
      相關PHP教程