Php 为什么Joomla将MVC视图分为两部分

Php 为什么Joomla将MVC视图分为两部分,php,html,model-view-controller,design-patterns,joomla,Php,Html,Model View Controller,Design Patterns,Joomla,我已经使用joomla一年多了,对MVC模式也很熟悉。但我不清楚Joomla在显示视图时如何使用MVC。在组件中,开发者使用以下两种方法 第一种方法 第二种方法 在第二种方法中,他们创建一个tmpl文件夹,并在其中放置一个default.php。然后,所有HTML和PHP代码都进入该文件 现在的问题是,当我们可以立即使用第一种方法时,为什么他们使用第二种方法?行业标准是什么?以上方法的优缺点是什么?应该使用什么,为什么以及取决于什么?谢谢没有“行业标准”。但是MVC有“关注点分离”的概念 第二种

我已经使用joomla一年多了,对MVC模式也很熟悉。但我不清楚Joomla在显示视图时如何使用MVC。在组件中,开发者使用以下两种方法

第一种方法

第二种方法

在第二种方法中,他们创建一个
tmpl
文件夹,并在其中放置一个
default.php
。然后,所有HTML和PHP代码都进入该文件

现在的问题是,当我们可以立即使用第一种方法时,为什么他们使用第二种方法?行业标准是什么?以上方法的优缺点是什么?应该使用什么,为什么以及取决于什么?谢谢

没有“行业标准”。但是MVC有“关注点分离”的概念

第二种方法更接近MVC模式的精神。视图应该负责UI逻辑。而且,如果此逻辑需要生成响应,请查看多个模板以创建响应。或者它可能选择只发送一个HTTP头


第一种方法是“快速清洁”版本。这通常意味着,UI逻辑在控制器中泄漏。或者,开发人员不明白为什么意大利面代码是一件坏事。

第二个方法似乎在调用父方法,因此它调用了模板的基本部分。通常情况下,您有一个基本模板,然后是使用该基本模板的单个内容(页面)

class myView extends JView
{
     function display($tpl = null)
     {                  
       //HTML & PHP goes here
     }  

}
class myView extends JView
{
        function display($tpl = null)
            {                   
            parent::display($tpl);
            }   

}