2015-09-07 102 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);这是什么困惑我新的传递控件来查看和查看作者没有失败的控制器运行 –