如何將 MVC 應用到 PHP 程式中

edited 十月 2013 in CakePHP
將 MVC 架構應用在 PHP 上

是否有好書可以介紹??
或怎麼學可以進入狀況??

感覺就算下載了 CakePHP 或 Zend framework
還是隔了一層 不知從何處著手

請高人指點
謝謝

原始討論: http://twpug.net/x/modules/newbb/viewtopic.php?topic_id=2352

評論

  • edited 一月 2007
    如果你已經是在 CakePHP 架構下面撰寫你的程式,你就已經在使用 MVC 了...

    如果你要的知道什麼是 MVC 那你可以參考一家設計方法的書籍。
    另外還有許多網站有介紹到 MVC 的觀念..
    http://www.neo.com.tw/archives/000212.html

    基本上我覺得,MVC 實做的觀念,每個人作法都不太一樣,不管你用的是 CakePHP , ZF , 還是其他的 Framework ,甚至是自己寫的,像是有朋友自己用 Smarty 架構自己的 Framework ...

    有的人會說,MVC這東西,寫程式寫到一定的程度,自然就會『ㄚ! 原來這就是 mvc ...』

    因為他是一種觀念,當你了解他背後所包裝起來的技術跟意義,你就會忽然通了~
  • edited 一月 2007
    謝謝 darkhero 的指點

    看過連結 Neo's blog 文章
    覺得問題浮到另一個層面:

    Neo 認為若是 Web 應用, 大可不必採用 MVC, 招致執行效率差程式碼分散的結果
    相反的, 也有工程師告訴我使用 MVC 對於長期維護程式增減功能有很大助益, 另方面 PHP 的公司 Zend 也在開發 Zend framework

    這兩種訊息讓我覺得衝突, 有點不知所措, 據了解使用 MVC 程式的行數的確會增多; 但也會有助健全的程式開發與便利維護程式, 兩種力量在拔河, 只是不知哪種力量影響程度較大??

    自己想用 PHP 建立 Website, 但看這狀況卻讓我更迷惑, 不知是否要用 MVC ??
  • edited 一月 2007
    施主...一切看你自己阿!~

    如果你覺得自己的 Site 用 MVC 根本是殺雞用牛刀...那就用 script + function 的方式囉....

    或許你覺得你的 Site 有需要用到 MVC 那就用...

    有的人連只有三四頁的活動網站都跑 MVC 的架構去 Run ...
    也有人不管多大的 Site 都是 Script + Function ...

    只要能做出你的需求..就足夠了不是嗎?

    另外,我覺得你對於 Neo 的說法有點誤會.
    他應該不是說 Web 應用根本不用 MVC ...

    而是單純的 Web 應用,並沒有需要完整的 mvc 架構...
    或許只要將 V 獨立就夠了...

    但是當網站架構到某一定的程度,適當的切割成 mvc 是比較好的...
  • edited 一月 2007
    據了解使用 MVC 程式的行數的確會增多; 但也會有助健全的程式開發與便利維護程式
    觀念不對。
    你把 MVC 和 framework 這兩種東西混淆在一起了。

    回應內容全文可以看我的部落格:
    http://blog.roodo.com/rocksaying/archives/2617123.html

    MVC 和 framework 是兩個不同層次的事物。借個譬喻, MVC 是戰略層次,而 framework 是戰術層次。 MVC 是一種程式架構的觀念,它與軟體需求或規格無關,其意義甚至可以簡化到視為 programmer 撰寫程式時的「良好習慣」。而 framework 可以視為常用功能大補帖,針對特定軟體需求,將常用功能或「最佳實踐方案」預先打造好的「準軟體」。隱蔽那些再用性與重複性高的內容,讓 programmer 專注在客製化內容。
  • edited 一月 2007
    ㄜ ... 小弟認為 MVC 是觀念沒錯
    而達成 MVC 概念則需要依靠程式撰寫方法
    一般來說 FrameWork 被人誤解為一群龐大的程式庫

    其實 FrameWork 應該只是專案開發的某種規範 , 眾人以此規範在這個 "框" 來 "架" 構出可維護的專案 , 而通常 FrameWork 也會輔以龐大常用或進階的程式庫幫助程式人員設計專案

    比較共通的特性是 , FrameWork 通常是去呼叫你寫的程式而非你去呼叫 FrameWork 來做事情

    講個比方 , 設計 Windows 視窗程式 , 假設採用 MFC , 很多視窗元件本身都已經被設計好何時該觸發某種事件 , 這些事件都會對應一個可實作(override)的 method , 而這些 method 若你不動 , 則他有預設的行為 , 若你想改變其行為 , 就去實作他 , 基本上視窗的運作流程你很難接觸到 , 你不過只是寫 method 讓 FrameWork 來呼叫而已
    這樣的好處在於 , 眾人協同開發專案時 , 不會有自己邏輯流程 , 大家遵循某種流程來做事情是很好的 , FrameWork 把流程都設計好 , 並且弄了很多"框" , 而每個框該做甚麼就由程式人員去想了 , 出了問題就看看是那個"框"有問題 , 就很好維護了


    所以小弟認為不論是 MVC 或者 FrameWork , 其理念都是為了方便長久的維護 , 如果說 100 人的團體當中只有 1 人會 CakePHP , 那麼你學 CakePHP 大概只有自己爽 , 在現實的環境中還是西瓜靠大邊的 , 像 .Net FrameWork 有微軟背後支持 , 很快的熟悉微軟程式設計的程式設計員們都可以互相看的懂對方的程式

    而 PHP 終於也有官方來支持了(Zend FrameWork) , 雖然是 Beta 版 , 但我相信日後最多人會使用的會是 Zend FrameWork
    各位看看 ZF 官網首頁的 IBM 開發的 QEDWiki 應該可以知道官方+大廠來推動的時候可以做出甚麼程度的專案吧
  • edited 一月 2007
    嗯,這個觀點不錯。Framework 和 Library 的差異就在於:library 是被呼叫者,而 framework 是呼叫者。

    有些用途較特定的 framework 本身就可以運行,雖然可能只是秀一下版本訊息,待 programmer 加入特定功能的內容後, framework 就會自動載入及調用。就像是某些軟體可以加掛 plug-in 一樣。

    不過 framework 是針對特定需求,集結最佳實踐而成的框架,所以要看軟體設計的開發需求決定 framework 。舉個例來說,你就不會也無法拿 CakePHP 開發 CLI 模式 (命令列模式) 的 php 程式。但 Zend Framework 卻可以用在這種狀況。 Zend Framework 的目標需求更泛用些,我不覺得它會取代所有 PHP 的 framework ,但有互補性,我們可以在 Zend Framework 上繼續開發新的 framework 。是的,框架之上還可以加框架,只是愈往上加的框架,目標愈特定而已。
Sign In or Register to comment.