我是 Joomla 的新手,我想知道 Joomla 使用什么 PHP 方法来开发网络应用程序?是 OOP PHP 还是过程PHP ?
答案 0 :(得分:1)
Joomla是基于OOP概念制作的,它遵循MVC模型。 MVC代表模型视图控制器,您可以在https://docs.joomla.org/Model-View-Controller处获取详细信息。简而言之,控制器从url中拾取组件及其视图变量,并借助这些变量将相应模型中的数据隐藏起来,并将数据传递回视图。视图然后显示所需的数据。控制器是视图和模型之间的中间人。 假设这是一个Joomla链接http://yoursite.com/index.php?option=com_hello&view=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();
此处getInstance
类的JControllerLegacy
静态方法将创建一个控制器。它将实例化名为HelloController
的类的控制器对象。 Joomla将在/components/com_hello/controller.php
中查找该类的声明。
创建控制器后,控制器工作就是执行URL <yoursite>/joomla/index.php?option=com_hello&task=<task_name>
中定义的任务。如果未设置任何任务,则默认任务为display
。使用display时,view
变量将决定要显示的内容。
通常在完成“保存”,“删除”,“归档”等任务后,控制器可能会决定重定向页面。最后一条语句$controller->redirect();
处理此重定向。
主要入口点hello.php实际上将控制权传递给控制器,该控制器处理执行请求中指定的任务。在我们的例子中,该任务为空,因此该任务默认为视图,并且该视图为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
的页面您还可以检查此链接以更好地了解MVC模式https://www.htmlgoodies.com/beyond/php/article.php/3912211/Principles-Of-MVC-for-PHP-Developers.htm