首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >php中的mvc架构最佳实践

php中的mvc架构最佳实践
EN

Stack Overflow用户
提问于 2015-09-07 17:47:50
回答 1查看 393关注 0票数 2

创建php mvc应用程序的最佳实践是什么?我是asp.net开发人员,其中控制器与视图.But链接,我在php mvc教程中看到,视图有控制器和模型类型的两个数据成员。View用于调用控制器类型为object和model的合适的控制器。视图包含有关控制器和模型的信息,其中控制器只知道模型。

代码语言:javascript
复制
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控制器决定当特定事件发生时调用哪个视图。有关模型和视图的控制器信息。视图可以具有object only.which的模型类型,如下所示

代码语言:javascript
复制
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中,哪种方法是在控制器中创建对象的视图类型,还是在视图中创建对象的控制器类型。

非常感谢!

EN

回答 1

Stack Overflow用户

发布于 2015-09-07 17:56:14

Php没有“开箱即用”的MVC结构。有几种方法可以实现MVC结构,您可以构建自己的结构。

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

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

我个人创建了一个Tempalte类,其中的方法允许向所选视图添加数据。

下面是一个示例:

代码语言:javascript
复制
   <?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";
    }

    }

这样,您的目标视图将拥有以$value为数据的$name变量。要创建视图,只需在控制器上执行所需操作,然后在添加"args“之后在模板实例上使用render($controller,$view)。(文件为view/CONTROLLER/VIEW.php)。

在本例中,php模板文件充当静态容器,视图文件包含在其中(main- container )。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32435649

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档