2015-09-07 42 views
2

創建php mvc應用程序的最佳實踐是什麼?我是asp.net開發人員,其中控制器與視圖鏈接。但我在php mvc教程中看到,該視圖有控制器和模型類型的兩個數據成員。視圖用於調用具有控制器類型的對象和模型的propitiate控制器。視圖具有關於控制器和模型的信息,其中控制器只知道模型。在php最佳實踐中的mvc體系結構

class model{ 
//code.. 
} 
class controller{ 
priavate $model;//model type object 
//code.. 
} 
class view{ 
    private $model;//model type of object 
    private $controller//controller type of object 
    //code.. 
} 

但是在asp.net mvc控制器中,當某些事件發生時決定調用哪個視圖。有關模型和視圖的控制器信息。視圖可以具有對象的模型類型only.which在PHP將作爲遵循

class model{ 
//code.. 
} 
class controller{ 
private $model;//model type object 
private view;/view type object 
//code.. 
} 
class view{ 
    private $model;//model type of object 
      //code.. 
} 

哪一個是創建在視圖對象的控制器或控制器類型的對象視圖類型在PHP最好的辦法。

非常感謝!

回答

3

Php不帶有「開箱即用」的MVC結構。有幾種方法可以實現一個MVC結構,你可以建立你自己的。

一些有用的文章: https://r.je/mvc-in-php.html

http://www.sitepoint.com/the-mvc-pattern-and-php-1/

我個人創造Tempalte類至極方法允許將數據添加到選定的視圖。

下面的例子:

<?php 

/** 
* Description of Template 
* 
* @author yuri.blanc 
*/ 
class Template { 
    private $template = TEMPLATE; 
    private $message = array(); 
    /** 
    * 
    * @var array 
    */ 
    private $var = array(); 
    private $view; 

    /** 
    * 
    * @param array $args 
    */ 
    public function renderArgs($name, $value){ 
     $this->var[$name] = $value; 
    } 

    public function render($controller, $view) { 
     $ctrl = strtolower($controller); 
     $this->page_content = $this->view = APP_ROOT."/view/$ctrl/$view.php"; 
     $this->renderArgs("template", $this->template); 
     $this->renderArgs("page_content", $this->page_content); 
     extract($this->var); 
     include APP_ROOT."template/$this->template/index.php"; 
    } 

    } 

這樣一來,你的目標視圖將有$值數據$ name變量。 要創建視圖,您只需在控制器上執行所需操作,然後在添加「參數」後在模板實例上使用render($ controller,$ view)。 (文件是view/CONTROLLER/VIEW.php)。

在此示例中,php模板文件充當靜態容器,其中包含視圖文件(主容器)。

+0

https://r.je/mvc-in-php.html我讀過這篇文章bro $ view = new View($ controller,$ model);這是什麼困惑我新的傳遞控件來查看和查看作者沒有失敗的控制器運行 –