*本篇先介紹一下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有很多可...