【问题标题】:mvc architecture in php best practicesphp最佳实践中的mvc架构
【发布时间】:2015-09-07 09:47:50
【问题描述】:

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

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 控制器中决定当某些事件发生时调用哪个视图。关于模型和视图的控制器信息。视图只能有模型类型的对象。在 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 中哪个是在控制器中创建对象的视图类型或在视图中创建对象的控制器类型的最佳方法。

非常感谢!

【问题讨论】:

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


    【解决方案1】:

    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 变量和 $value 作为数据。 要创建视图,您只需在控制器上执行所需的操作,然后在添加“args”后在模板实例上使用 render($controller,$view)。 (文件是 view/CONTROLLER/VIEW.php)。

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

    【讨论】:

    • r.je/mvc-in-php.html 我读了这篇文章兄弟 $view = new View($controller, $model);这让我感到困惑的是,新的传递控制视图和视图作者没有无法运行的控制器
    猜你喜欢
    • 1970-01-01
    • 2012-04-13
    • 1970-01-01
    • 2013-01-04
    • 2015-07-13
    • 2020-06-12
    • 2010-11-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多