php - php中的mvc架构最佳实践

标签 php asp.net-mvc model-view-controller

创建 php mvc 应用程序的最佳实践是什么。我是asp.net开发人员,其中 Controller 与 View 链接。但是我在php mvc教程中看到 View 有 Controller 和模型类型的两个数据成员。 View 用于调用对象和模型的 Controller 类型的相应 Controller 。 View 包含有关 Controller 和模型的信息,其中 Controller 只知道模型。

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 中, Controller 决定在发生特定事件时调用哪个 View 。有关模型和 View 的 Controller 信息。 View 只能有对象的模型类型。在 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 中,哪一种是在 Controller 中创建对象的 View 类型或在 View 中创建对象的 Controller 类型的最佳方法。

非常感谢!

最佳答案

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

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

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

我个人创建了一个 Tempalte 类,它的方法允许将数据添加到所选 View 。

这里是一个例子:

   <?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";
    }

    }

这样,您的目标 View 将具有 $name 变量和 $value 作为数据。 要创建 View ,您只需在 Controller 上执行所需操作,然后在添加“args”后在模板实例上使用 render($controller,$view) 。 (文件为 view/CONTROLLER/VIEW.php)。

在此示例中,php 模板文件充当静态容器,其中包含 View 文件(主容器)。

关于php - php中的mvc架构最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32435649/

相关文章:

php - 通过多步骤表单传递信用卡号的最安全方法?

javascript - AJAX 请求后的 JQuery 确认对话框

asp.net-mvc - 从 T4MVC 创建 RedirectResult

javascript - 尝试使嵌套问题动态出现... C# ASP.Net 数据库 首先,

javascript - 如何使用传递给该模板的数据在 Handlebars 模板中的元素上注册事件

php - 显示来自 mySQL 的类似结果

php - Google Calendar API PHP 通知到期值

asp.net-mvc - 网站安全陷阱以及在 ASP.NET MVC 中我可以做什么来避免/减轻它们?

c# - 使用数据库优先方法时覆盖或替换默认构造函数

ruby-on-rails - Rails View 中显示的原始数据库内容