PHP的MVC框架 深入解析

2021-09-08 16:54:08 字數 3008 閱讀 5484

*本篇先介紹一下php的mvc實現原理,我們框架的mvc部分也是基於此原理實現的,但是今天的**並不是框架內的**,僅僅為說明原理 *

建立3個資料夾

我們在controller資料夾下建立乙個democontroller.php檔案,檔案內容如下

<?php

class

democontroller

}/* end of file democontroller.php */

這個檔案裡面我們只是建立了乙個名為democontroller的物件幷包含乙個index的方法,該方法輸出hello world。

下面在index.php中執行democontroller中index方法。

index.php的**如下

<?php

require

('controller/democontroller.php');

$controller

=new

democontroller()

;$controller

->

index()

;/* end of file index.php */

執行index.php,ok如願我們看到了我們久違的hello world。

這兩個檔案非常簡單,但也揭示了一點點mvc的本質,通過唯一入口執行我們要執行的控制器。

當然controller部分應該是由uri來決定的,那麼我們來改寫一下index.php使他能通過uri來決定執行那個controller。

index.php改寫**如下:

<?php

$c_str

=$_get

['c'];

//獲取要執行的controller

$c_name

=$c_str

.'controller'

;//按照約定url中獲取的controller名字不包含controller,此處補齊。

$c_path

='controller/'

.$c_name

.'.php'

;//按照約定controller檔案要建立在controller資料夾下,類名要與檔名相同,且檔名要全部小寫。

$method

=$_get

['a'];

//獲取要執行的action

require

($c_path);

//載入controller檔案

$controller

=new

$c_name

;//例項化controller檔案

$controller

->

$method()

;//執行該例項下的action

/* end of file index.php */

在瀏覽器中輸入http://localhost/index.php?c=demo&a=index,得到了我們的hello world。

當然如果我們有其他的controller並且要執行它,只要修改url引數中的c和a的值就可以了。

php是動態語言,我們直接可以通過字串new出我們想要的物件和執行我們想要的方法,即上面的new $c_name,我們可以理解成new 'democontroller',因為$c_name本身的值就是'democontroller',當然直接new 'democontroller'這麼寫是不行的,其中的'democontroller'字串必須通過乙個變數來中轉一下。方法也是一樣的。

我們在url中c的值是demo,也就是說$c_name的值應該是democontroller呀,php不是區分大小寫嗎,這樣也能執行嗎?php區分大小寫這句話不完整,在php中只有變數(前面帶$的)和常量(define定義的)是區分大小寫的,而類名方,法名甚至一些關鍵字都是不區分大小寫的。而true,false,null等只能全部大寫或全部小寫。當然我們最好在實際編碼過程中區分大小寫。

我們在前面的controller中只是輸出了乙個「hello world」,並沒有達到mvc的效果,下面我將在此基礎上增加檢視功能,相信到這裡大家基本已經能想到如何新增檢視功能了。對,就是通過萬惡的require或者include來實現。

首先我們在view資料夾下建立乙個index.php,隨便寫點什麼(呵呵,我寫的還是hello world)。之後我們改寫一下我們之前的democontroller。**如下:

<?php

class

democontroller

}/* end of file democontroller.php */

再在瀏覽器中執行一下,看看是不是已經輸出了我們想要的內容了。

接著我們通過controller向view傳遞一些資料看看,**如下:

<?php

class

democontroller

}/* end of file democontroller.php */

view資料夾下index.php檔案**如下:

demo<

/title>

<

/head>

<?php

echo

$data

['title'];

?>

<

/h1>

<?php

foreach

($data

['list']as

$item

)?>

<

/body>

<

/html>

最後mvc就是model view controller模型 檢視 控制器

PHP的MVC框架 深入解析

原文 php的mvc框架 深入解析 本篇先介紹一下php的mvc實現原理,我們框架的mvc部分也是基於此原理實現的,但是今天的 並不是框架內的 僅僅為說明原理 一 檔案結構 建立3個資料夾 controller資料夾存放控制器檔案 view資料夾存放視 件 model資料夾存放資料檔案 建立1個in...

php裡mvc結構的框架,php mvc框架結構

很抱歉這裡有這麼多 我盡量表現出足夠的理解力,同時避免混淆 我希望如此 我在 pastebin 執行時不會出現錯誤 通知 警告。我目前正在建立乙個內容管理系統,同時嘗試實現模型 檢視 控制器的思想。我最近才接觸到mvc的概念 在上週內 並試圖將其應用到我當前的專案中。cms的乙個特性是動態 可定製的...

PHP模板引擎,框架,MVC

mvc工作原理 mvc思想 單一入口的工作原理 用乙個處理程式檔案處理所有的http請求,根據請求時的引數不同區分不同模組和操作的請求 優勢 可以進行統一的安全性檢查 集中處理程式 劣勢 url不美觀 處理效率會稍低 模板引擎 php是一種html內嵌式的在服務端執行的指令碼語言,但是php有很多可...