Joomla中使用的PHP方法是什么(OOP或过程)



我是Joomla的新手,我想知道Joemla用于开发web应用程序的PHP方法是什么?是OOP PHP还是过程PHP

Joomla是基于OOP概念制作的,它遵循MVC模型。MVC代表模型视图控制器,您可以在此处获得详细信息https://docs.joomla.org/Model-View-Controller.简而言之,控制器从url中获取组件及其视图变量,并在这些变量的帮助下,从相应的模型中传递数据,并将数据传回视图。View然后显示所需的数据。控制器是视图和模型之间的中间人。假设这是Joomla链接http://yoursite.com/index.php?option=com_hello&视图=你好因此,控制器选择组件变量com_hello和视图变量hello。现在,在组件com_hello文件夹中,将有一个名为hello.php的文件,它是组件的主文件。作为一个例子,我给出了以下代码

<?php
/**
* @package     Joomla.Administrator
* @subpackage  com_hello
*
* @copyright   Copyright (C) 2005 - 2018 Open Source Matters, Inc. All rights reserved.
* @license     GNU General Public License version 2 or later; see LICENSE.txt
*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// Get an instance of the controller prefixed by Hello
$controller = JControllerLegacy::getInstance('Hello');
// Perform the Request task
$input = JFactory::getApplication()->input;
$controller->execute($input->getCmd('task'));
// Redirect if set by the controller
$controller->redirect();

这里JControllerLegacy类的getInstance静态方法将创建一个控制器。它将实例化一个名为HelloController的类的控制器对象。Joomla将在/components/com_hello/controller.php中查找该类的声明。创建控制器后,控制器作业将执行URL中定义的任务:<yoursite>/joomla/index.php?option=com_hello&task=<task_name>。如果未设置任务,则默认任务为display。当使用显示器时,view变量将决定将显示什么。

控制器可能会决定重定向页面,通常是在"保存"、"删除"、"存档"等任务完成后。最后一条语句$controller->redirect();负责处理此重定向。

主入口点hello.php本质上将控制权传递给控制器,控制器负责执行请求中指定的任务。在我们的例子中,任务是空的,因此任务默认为view,视图为hello。我们的特定于组件的控制器除了父类已经做的事情之外什么都不做,这就是为什么我们的控制器类是空的。所以我们的controller.php看起来像这个

class HelloController extends JControllerLegacy
{
}

JControllerLegacy类有这样一个任务。在我们的示例中,它将显示一个名为Hello的视图。view.html.php

class HelloViewHello extends JViewLegacy
{
function display($tpl = null)
{
// Assign data to the view
$this->msg = 'Hello';
// Display the view
parent::display($tpl);
}
}

该视图设置要输出的文本,然后调用基本显示类。JViewLegacy是Joomla的基类!看法在我们的例子中,此方法将使用tmpl/default.php文件显示数据。

我们的default.php在下面会是这样的

<h1><?php echo $this->msg; ?></h1>

这只是Joomla MVC工作原理的一个简单解释。我本可以简单地给出链接,但链接多次中断或网站关闭。但这是我复制大部分代码的页面https://docs.joomla.org/J3.x:Developing_an_MVC_Component/Adding_a_view_to_the_site_part

您也可以查看此slink以更好地理解MVC模式https://www.htmlgoodies.com/beyond/php/article.php/3912211/Principles-Of-MVC-for-PHP-Developers.htm

最新更新