⑴ php中MVC的開發模式如何去理解
MVC設計模式把一個軟體組件區分為三個不同的部分,model,view,controller。
MVC模式是"Model-View-Controller"的縮寫,中文翻譯為"模式-視圖-控制器"。MVC應用程序總是由這三個部分組成。Event(事件)導致Controller改變Model或View,或者同時改變兩者。只要Controller改變了Models的數據或者屬性,所有依賴的View都會自動更新。類似的,只要Controller改變了View,View會從潛在的Model中獲取數據來刷新自己。MVC模式最早是smalltalk語言研究團提出的,應用於用戶交互應用程序中。smalltalk語言和java語言有很多相似性,都是面向對象語言,很自然的SUN在petstore(寵物店)事例應用程序中就推薦MVC模式作為開發Web應用的架構模式。MVC模式是一種架構模式,其實需要其他模式協作完成。在J2EE模式目錄中,通常採用service to worker模式實現,而service to worker模式可由集中控制器模式,派遣器模式和Page Helper模式組成。而Struts只實現了MVC的View和Controller兩個部分,Model部分需要開發者自己來實現,Struts提供了抽象類Action使開發者能將Model應用於Struts框架中Model是代表組件狀態和低級行為的部分,它管理著自己的狀態並且處理所有對狀態的操作,model自己本身並不知道使用自己的view和controller是誰,系統維護著它和view之間的關系,當model發生了改變系統還負責通知相應的view。
View代表了管理model所含有的數據的一個視覺上的呈現。一個Model可以有一個以上的View,但是Swing中卻很少有這樣的情況。
Controller管理著model和用戶之間的交互的控制。它提供了一些方法去處理當model的狀態發生了變化時的情況。
⑵ 如何用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; }
⑶ 請大家介紹PHP MVC 三層架構開發
php 里很少用mvc架構
mvc架構是一個很優秀的思想,
不分語言
如果你會,你可以把它用在php里,
如果不會就不用學了,
php里多用到template
常用的有smarty ,st smarttemplate,phplib template
再用資料庫類:phplib db_mysql.inc
php是c語言的化身
⑷ php mvc框架
MVC不是建立幾個包而已,而是一種思想,當然幾個包會讓你把這個思想實例出來- -,比如說你有一個表,而已你實例這個表的話,就要有一個類來囊括其中的欄位,包括一些_get,_set方法,然後用另一個類繼承此類,封裝一些添刪改查的等等方法,這個類就可以理解成Model層,可以放在一個包下,而邏輯頁面望望要require_noce此文件類來實例化此類,通過對象來調用其中的方法,進而顯示給客戶,php中C層和V層在不用模板的情況下(比如說smarty)不用分離的那麼明顯,要麼怎麼是php那~小快靈么~整體上不局限於java那種純的面向對象,但又不失對數據安全性與維護性特點,這就是php的MVC~
⑸ php如何實現mvc框架,一定要突出php實現,不是其他語言!!!求大神(最好有步驟)
第一步,單一入口,任何頁面都請求的是根目錄index.php文件,通過querystring或者pathinfo兩種方式任選一種或兩種都用來獲取參數。如果能用URL重寫隱藏URL地址中的index.php更好。
第二步,在index.php中處理接受到的參數,至少要從這些參數中獲得控制器(MVC中的C)的名稱,和方法的名稱,控制器是一個類,有了控制器的名稱就可以調用這個類,並通過方法的名稱來執行控制器裡面的某一個方法,其它參數可以作為這個方法的參數。如果項目較大,還可以把控制器分成不同模塊,放在不同目錄里。
第三步,在控制器裡面處理用戶提交數據,執行流程式控制制,最後將結果輸出到視圖文件(MVC中的V)上,視圖文件也可以叫模板,可以在控制器里直接include,也可以使用模板引擎。
補充1:模型(MVC中的M)指的是資料庫模型,也就是各個數據表的數據處理邏輯,你可以做一個資料庫的操作類,也可以做一個ORM對象關系映射框架,在控制器中需要處理數據的時候直接調用就行了。其實PHP中的M比較模糊,看你的習慣,本來MVC開發模式就是為了提高開發效率的,所以你覺得怎麼方便怎麼來。
補充2:你還可以把常用的功能都封裝成類,一個類實現一個功能,這些類的集合就是類庫,就是我們常說的輪子。簡單的功能也可以做成函數。總之,在需要的時候調用就行了。
補充3:現在幾乎所有主流的PHP框架都是MVC,你如果已經明白了PHP的編程基礎,不妨可以學習一兩種框架,這樣你很快就明白MVC了,並且可以開發自己的框架。
補充4:你以為這么多字我是復制的嗎?我可真的都是手打出來的,我一定是太閑了,採納吧!
⑹ 什麼是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 框架,比如ThinkPhp,控制器集成父類,在父類裡面已經有調度相關視圖類的操作了。
所以再賦值的時候,只需要使用對應的方法,(TP 的assign 方法,之後 display,就可以在視圖裡面顯示了。)
大致思路就是 你的控制器需要調用 視圖類的一些方法,之後通過視圖 提供的方法顯示頁面。
學習MVC 推薦使用一些框架,比如ThinkPHP,你可以看一下源碼。會讓你受益匪淺的。
⑻ php怎麼實現mvc
MVC三個字母的含義:
M:Model 模型,負責資料庫操作。
V:View 視圖,負責調用Model調取數據,再調用模板,展示出最終效果。
C:Controller 控制器,程序的入口,決定改調用哪個View,並告訴View該做什麼。
下面是一個超級簡單的MVC結構實現:
Controller.php
include'Model.php';
include'View.php';
classController{
private$model='';
private$view='';
publicfunctionController(){
$this->model=newModel();
$this->view=newView();
}
publicfunctiondoAction($method='defaultMethod',$params=array()){
if(empty($method)){
$this->defaultMethod();
}elseif(method_exists($this,$method)){
call_user_func(array($this,$method),$params);
}else{
$this->nonexisting_method();
}
}
publicfunctionlink_page($name=''){
$links=$this->model->getLinks();
$this->view->display($links);
$result=$this->model->getResult($name);
$this->view->display($result);
}
publicfunctiondefaultMethod(){
$this->br();
echo"Thisisthedefaultmethod.";
}
publicfunctionnonexisting_method(){
$this->br();
echo"Thisisthenoexistingmethod.";
}
publicfunctionbr(){
echo"<br/>";
}
}
$controller=newController();
$controller->doAction('link_page','b');
$controller->doAction();
Model.php
classModel{
private$database=array(
"a"=>"helloworld",
"b"=>"okwelldone",
"c"=>"goodbye",
);
//@TODOconnectthedatabase
//runthequeryandgettheresult
publicfunctiongetResult($name){
if(empty($name)){
returnFALSE;
}
if(in_array($name,array_keys($this->database))){
return$this->database[$name];
}
}
publicfunctiongetLinks(){
$links="<ahref='#'>LinkA</a> ";
$links.="<ahref='#'>LinkB</a> ";
$links.="<ahref='#'>LinkC</a> ";
return$links;
}
}
View.php
classView{
publicfunctiondisplay($output){
//ob_start();
echo$output;
}
}
⑼ PHPmvc開發
看不清楚 貼上代碼
⑽ 看了fleaphp地實例 自己對mvc的理解難道是錯誤地 - PHP框架開發
原帖由 於 2008-8-21 09:20 發表 [i]/*** 載入模型??控制器?* */class App_Run{? ?? ???public function routing(){? ?? ?? ?? ?? ? $model = MOBILE_MODEL.\'_\'.MODEL_SWITCHING.\'_\'.$_REQUEST[\'do\'];//Moudels/default/Index.php? ?? ?? ?? ?? ? if(class_exists($mode ... 我個人認為model層和view層應該是完全沒有關系的。好比飯店的廚師(model)和飯店的吃客。店小二是控制器層。輸出v層和銜接model層應該在控制器層來操作。 查看原帖>>