與php如何實現mvc,php教程 csdn

本文目錄一覽:

詳解PHP實現MVC的幾種方法

相信所有習慣了使用MVC來組織自己的項目的人,讓他選擇一個新的項目構架時,一定不會放棄MVC。傳統的面相過程式的開發方式在處理中型以上的應用時,就開始顯得力不從心。即便我們能夠快速的完成需求,但是在需求發生變更後或者進行後期維護的時候,我們會深深地陷入我們早期搭建的陷阱中。什麼是MVC?關於MVC的定義和解釋,可以說多種多樣。我們可以在Wiki或者[2]中找到更為詳盡的解釋,這裡我並不打算,也沒有能力進行深入的講解,從PHP開發的角度來講,MVC可以概括為:視圖(The View):一說到視圖,我們很多人都會想到模板引擎(諸如Smarty等等)。其實就是各種各樣的輸出,比如說html模板和Javascript文件等。模塊(The Model)模塊代表了程序的邏輯,在企業應用中通常稱為業務邏輯層。一般來講,這一層完成的工作是把原始的數據處理成按照我們設計的數據結構存儲的有意義的數據序列,並將這些數據交給視圖去處理。通常情況下, 模塊中會利用一個數據抽象類來進行與數據操作有關的處理。關於MVC的是否適合PHP的爭論也很多,人們不斷的討論MVC是否適合PHP[3],現在也已經有了很多的MVC框架,諸如PHP MVC Frameworks中列出的[4]。那麼,為什麼人們這麼熱衷於MVC,我們為什麼要使用MVC在我們的設計中呢。為什麼用MVC?MVC最早是用來解決桌面GUI的編程問題,最早的MVC框架應該是Sun在1999年提出的Model 2,後來演變成了Struts。MVC帶給人們深刻的印象,但是我們在使用的過程中,卻並沒有認真的想過為什麼使用MVC。在傳統的桌面應用中,一旦Model中有時間發生,我們可以主動的讓View界面進行刷新,從而展示後台發生的變化。而在Web應用中,我們似乎限於傳統的Http的Request/Response的方式,我們似乎沒有辦法讓用戶端進行更新。這一段討論,並不是認為MVC不能夠用來進行WEB應用的開發,而是覺得從某種程度上來說,他還不是最合適的。關於使用MVC的爭論還有很多[1],但是相信所有習慣了使用MVC來組織自己的項目的人,讓他選擇一個新的項目構架時,一定不會放棄MVC。如何PHP實現MVC?下面是一個超級簡單的MVC結構實現,甚至連數據源都用了一個內置的固定數組,雖然簡單,但其實眾多的PHP Framework核心實現的思想應該和這個是差不多的,只不過一些framework提供了更多的方便開發者使用的工具,我也想自己來實現一個PHP的框架,目前正在著手策劃中,也希望自己能夠從框架的開發中學習到更多的PHP設計思想和方法。

php如何實現mvc+l,思路是什麼?

M model 一般是控制資料庫、資源、對象屬性的

V view 視圖,也就是給客戶呈現的UI

C controller 邏輯事務處理器,主要針對客戶端傳來的數據該怎麼處理、輸出,

L Language 國內的人比較少聽說,我們河南新社 經常給國外的客戶做,他們要求前台UI的多數文本,是可以輕鬆修改,或者支持多國語言。這時候,M和C就不能簡單的把文本固定寫到代碼里,而是用$this-language-get[‘text_customer’] 這個變數來替代以前的 “客戶”這樣一個文本;然後建立一個language庫,結構上跟MCV平行。

當然我也聽某群里的「大神」給別人解釋是lib,我是不贊同的,說到底這個大神沒有接觸到國外的業務,而國內小型業務還不要去語言分離或者多語言。如果是是lib,那就是引擎層面的了,跟mvc在結構上不是平行的,不如說 Catalog(MVC)+System(Lib+Engine)

如何用PHP實現自己的MVC

MVC三個字母的含義: M:Model 模型,負責資料庫操作。 V:View 視圖,負責調用Model調取數據,再調用模板,展示出最終效果。 C:Controller 控制器,程序的入口,決定改調用哪個View,並告訴View該做什麼。 下面是一個超級簡單的MVC結構實現: Controller.php include ‘Model.php’; include ‘View.php’; class Controller {     private $model     = ”;     private $view     = ”;          public function Controller(){         $this-model    =    new Model();         $this-view        =    new View();     }          public function doAction( $method = ‘defaultMethod’, $params = array() ){         if( empty($method) ){             $this-defaultMethod();         }else if( method_exists($this, $method) ){             call_user_func(array($this, $method), $params);         }else{             $this-nonexisting_method();         }     }          public function link_page($name = ”){         $links = $this-model-getLinks();         $this-view-display($links);                  $result = $this-model-getResult($name);         $this-view-display($result);     }          public function defaultMethod(){         $this-br();         echo “This is the default method. “;     }          public function nonexisting_method(){         $this-br();         echo “This is the noexisting method. “;     }          public function br(){         echo “”;     } } $controller = new Controller(); $controller-doAction(‘link_page’, ‘b’); $controller-doAction(); Model.php class Model {     private $database = array(         “a”    =    “hello world”,         “b”    =    “ok well done”,         “c”    =    “good bye”,     );          //@TODO connect the database          //run the query and get the result     public function getResult($name){         if( empty($name) ){             return FALSE;         }                  if( in_array($name, array_keys( $this-database ) ) ){             return $this-database[$name];         }     }     public function getLinks(){         $links = “Link A “;         $links.= “Link B “;         $links.= “Link C “;                  return $links;     } } View.php class View {          public function display($output){ //        ob_start();                  echo $output;     }     

什麼是MVC以及PHP怎樣實現MVC

其實你的問題一開始就問錯了,即然你問了,我就隨便說說好了。

MVC 是一種設計風格,並不是一種具體手法。每個人寫代碼都有自己習慣的一種設計風格。MVC 是應用程序開發常用的一種風格,實際上並不適合 PHP,因為 PHP 的工作環境註定了它很難做出像樣的控制器,也就是 Controll 。

MVC 本來的設計風格是:整個系統由一個程序啟動,再根據用戶操作調用各個處理模塊,根據數據結果來決定顯示成什麼樣給用戶看。就像我們平時用的各種程序的主界面。這樣程序員創建好主程序以後,只要把注意力集中在開發各個子功能上就可以了。。

可是 php 大多數情況下工作於 web 環境,有「頁」的概念,每次執行都是一個新的請求。這就註定了很難實現真正的 MVC,因為用戶看到頁面時,PHP 已經執行完了,不可能再切換去調另一個 模型M 和 視圖V 。

目前自稱 MVC 的各種框架。也只不過是用一個程序判斷請求,載入不同的功能塊。只能稱之為「單點入口」,在思路上是「請求相同的部份,而包含不同的部份」。這個入口程序實際上啥也沒做,所以算不上是 MVC。反而 JS 開發的富客戶端更接近一些。由一個 JS 主程序,跟據用戶請求決定調用哪些數據,再把界面改變成什麼樣。

設計風格是前人總結出來的東西,在當前語言,當然環境,當前思維方式下。比較容易繼續思考的一種設計方式。MVC 只不過是其中一種,而且並不是最適合 PHP 的一種。偏偏被炒作得好像標準似的。。

如果你一定要, 就去看一下 「PHP 單點入口實現」吧,已經是比較接近的東西了。如果一次性的控制器也能算控制器的話……

php怎麼實現mvc?

MVC三個字母的含義:

M:Model 模型,負責資料庫操作。

V:View 視圖,負責調用Model調取數據,再調用模板,展示出最終效果。

C:Controller 控制器,程序的入口,決定改調用哪個View,並告訴View該做什麼。

下面是一個超級簡單的MVC結構實現:

Controller.php

include ‘Model.php’;

include ‘View.php’;

class Controller {

    private $model     = ”;

    private $view     = ”;

    

    public function Controller(){

        $this-model    =    new Model();

        $this-view        =    new View();

    }

    

    public function doAction( $method = ‘defaultMethod’, $params = array() ){

        if( empty($method) ){

            $this-defaultMethod();

        }else if( method_exists($this, $method) ){

            call_user_func(array($this, $method), $params);

        }else{

            $this-nonexisting_method();

        }

    }

    

    public function link_page($name = ”){

        $links = $this-model-getLinks();

        $this-view-display($links);

        

        $result = $this-model-getResult($name);

        $this-view-display($result);

    }

    

    public function defaultMethod(){

        $this-br();

        echo “This is the default method. “;

    }

    

    public function nonexisting_method(){

        $this-br();

        echo “This is the noexisting method. “;

    }

    

    public function br(){

        echo “br /”;

    }

}

$controller = new Controller();

$controller-doAction(‘link_page’, ‘b’);

$controller-doAction();

Model.php

class Model {

    private $database = array(

        “a”    =    “hello world”,

        “b”    =    “ok well done”,

        “c”    =    “good bye”,

    );

    

    //@TODO connect the database

    

    //run the query and get the result

    public function getResult($name){

        if( empty($name) ){

            return FALSE;

        }

        

        if( in_array($name, array_keys( $this-database ) ) ){

            return $this-database[$name];

        }

    }

    public function getLinks(){

        $links = “a href=’#’Link A/anbsp;nbsp;”;

        $links.= “a href=’#’Link B/anbsp;nbsp;”;

        $links.= “a href=’#’Link C/anbsp;nbsp;”;

        

        return $links;

    }

}

View.php

class View {

    

    public function display($output){

//        ob_start();

        

        echo $output;

    }

    

}

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/241089.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-12 12:25
下一篇 2024-12-12 12:25

相關推薦

  • PHP和Python哪個好找工作?

    PHP和Python都是非常流行的編程語言,它們被廣泛應用於不同領域的開發中。但是,在考慮擇業方向的時候,很多人都會有一個問題:PHP和Python哪個好找工作?這篇文章將從多個方…

    編程 2025-04-29
  • MQTT使用教程

    MQTT是一種輕量級的消息傳輸協議,適用於物聯網領域中的設備與雲端、設備與設備之間的數據傳輸。本文將介紹使用MQTT實現設備與雲端數據傳輸的方法和注意事項。 一、準備工作 在使用M…

    編程 2025-04-29
  • Python3.6.5下載安裝教程

    Python是一種面向對象、解釋型計算機程序語言。它是一門動態語言,因為它不會對程序員提前聲明變數類型,而是在變數第一次賦值時自動識別該變數的類型。 Python3.6.5是Pyt…

    編程 2025-04-29
  • Deepin系統分區設置教程

    本教程將會詳細介紹Deepin系統如何進行分區設置,分享多種方式讓您了解如何規劃您的硬碟。 一、分區的基本知識 在進行Deepin系統分區設置之前,我們需要了解一些基本分區概念。 …

    編程 2025-04-29
  • 寫代碼新手教程

    本文將從語言選擇、學習方法、編碼規範以及常見問題解答等多個方面,為編程新手提供實用、簡明的教程。 一、語言選擇 作為編程新手,選擇一門編程語言是很關鍵的一步。以下是幾個有代表性的編…

    編程 2025-04-29
  • 如何實現圖像粘貼到蒙版

    本文將從多個方面介紹圖像粘貼到蒙版的實現方法。 一、創建蒙版 首先,在HTML中創建一個蒙版元素,用於接收要粘貼的圖片。 <div id=”mask” style=”widt…

    編程 2025-04-29
  • Qt雷達探測教程

    本文主要介紹如何使用Qt開發雷達探測程序,並展示一個簡單的雷達探測示例。 一、環境準備 在開始本教程之前,需要確保你的開發環境已經安裝Qt和Qt Creator。如果沒有安裝,可以…

    編程 2025-04-29
  • 猿編程python免費全套教程400集

    想要學習Python編程嗎?猿編程python免費全套教程400集是一個不錯的選擇!下面我們來詳細了解一下這個教程。 一、課程內容 猿編程python免費全套教程400集包含了從P…

    編程 2025-04-29
  • Python煙花教程

    Python煙花代碼在近年來越來越受到人們的歡迎,因為它可以讓我們在終端里玩煙花,不僅具有視覺美感,還可以通過代碼實現動畫和音效。本教程將詳細介紹Python煙花代碼的實現原理和模…

    編程 2025-04-29
  • PHP怎麼接幣

    想要在自己的網站或應用中接受比特幣等加密貨幣的支付,就需要對該加密貨幣擁有一定的了解,並使用對應的API進行開發。本文將從多個方面詳細闡述如何使用PHP接受加密貨幣的支付。 一、環…

    編程 2025-04-29

發表回復

登錄後才能評論