中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何在PHP項目中實現一個MVC框架

發布時間:2021-02-07 20:47:48 來源:億速云 閱讀:244 作者:Leah 欄目:開發技術

這期內容當中小編將會給大家帶來有關如何在PHP項目中實現一個MVC框架,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

什么是MVC?

如何在PHP項目中實現一個MVC框架

關于MVC的定義和解釋,可以說多種多樣。我們可以在Wiki或者[2]中找到更為詳盡的解釋,這里我并不打算,也沒有能力進行深入的講解,從PHP開發的角度來講,MVC可以概括為:

視圖(The View):

一說到視圖,我們很多人都會想到模板引擎(諸如Smarty等等)。其實就是各種各樣的輸出,比如說html模板和Javascript文件等。

模塊(The Model)

模塊代表了程序的邏輯,在企業應用中通常稱為業務邏輯層。一般來講,這一層完成的工作是把原始的數據處理成按照我們設計的數據結構存儲的有意義的數據序列,并將這些數據交給視圖去處理。通常情況下, 模塊中會利用一個數據抽象類來進行與數據操作有關的處理。

Model通常包含了哪些用來同數據庫打交道的函數。

控制器(The Controller)

控制器使所有WEB應用的第一站,他接受收到的參數,比如$_GET變量,然后做出相應的反應。

關于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。

如何實現MVC?

下面是一個超級簡單的MVC結構實現,甚至連數據源都用了一個內置的固定數組,雖然簡單,但其實眾多的PHP Framework核心實現的思想應該和這個是差不多的,只不過一些framework提供了更多的方便開發者使用的工具,我也想自己來實現一個PHP的框架,目前正在著手策劃中,也希望自己能夠從框架的開發中學習到更多的PHP設計思想和方法。

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;
}
}

上述就是小編為大家分享的如何在PHP項目中實現一個MVC框架了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

高陵县| 克拉玛依市| 丰都县| 兰溪市| 木兰县| 沛县| 江油市| 荥阳市| 仲巴县| 如皋市| 册亨县| 永吉县| 江津市| 大方县| 银川市| 苗栗市| 南和县| 鄂尔多斯市| 湘乡市| 利川市| 苍山县| 仪征市| 呼伦贝尔市| 北安市| 屏东县| 梓潼县| 岳西县| 和顺县| 民勤县| 平原县| 宁陕县| 广元市| 达尔| 沾化县| 寻甸| 合山市| 呼伦贝尔市| 左贡县| 牙克石市| 久治县| 乌拉特前旗|