PHP的MVC框架 深入解析

2021-09-06 23:26:55 字數 2836 閱讀 6594

原文:

php的mvc框架 深入解析

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

一、檔案結構

建立3個資料夾 

controller資料夾存放控制器檔案 

view資料夾存放視**件 

model資料夾存放資料檔案 

建立1個index.php 作為唯一入口 

二、控制器 

我們在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檔案**如下: 

<?php

foreach ($data['list'] as

$item)

?>

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

PHP的MVC框架 深入解析

本篇先介紹一下php的mvc實現原理,我們框架的mvc部分也是基於此原理實現的,但是今天的 並不是框架內的 僅僅為說明原理 建立3個資料夾 我們在controller資料夾下建立乙個democontroller.php檔案,檔案內容如下 class democontroller end of fil...

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

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

PHP模板引擎,框架,MVC

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