Joomla3开发教程

理解Application类

Joomla在安装的时候会安装几个Application(应用程序),每一个应用程序的负责不同的模块。

Joomla Application(应用程序)


Joomla在安装的时候会安装几个Application(应用程序),每一个应用程序的负责不同的模块:

  • Site,也就是我们常说的前台
  • Administrator ,也就是我们说的后台。在后台可以对网站前台的内容进行管理和维护。
  • Installer ,Joomla网站的安装程序(注意,这里的安装程序不是Joomla后的扩展管理,安装扩展功能),就是最开始在你的WEB环境中安装Joomla时出现的界面。在安装完成后,Installer应用就会被删除。

继承关系


上面的Administrator,SiteInstallion是主要的应用程序,每一个应用程序类都继承自 \\Joomla\\Application\\AbstractApplication这个虚基类。其最终的类名为:

  • Administrator => JApplicationAdministrator,
  • Site  => JApplicationSite
  • Installer => InstallationApplicationWeb

继承关系图如下:

  Joomla Framework Abstract Application
    |
    |
    |---> Base Application (adds some CMS Specific functions)
            |
            |
            |---> Web Application (adds some generic web application functions)
            |       |
            |       |
            |       |---> JApplicationCms (things specific for running the CMS)
            |               |
            |               |---> JApplicationAdministrator
            |               |
            |               |---> JApplicationSite
            |               |
            |               |---> InstallationApplicationWeb
            |
            |
            |---> CLI Application
            |
            |
            |---> Daemon Application

通过$app = JFactory::getApplication();可以得到当前的应用程序对象,系统会自动的基于当前的运行环境返回正确的类。也就是说在前台使用上面的代码得到的$app对象实际是JApplicationSIte类的一个实例,在后台则得到是JApplicationAdministrator类的一个实例。

CLI命令行应用


 除了能够做浏览器应用外,Joomla也可以做CLI命令行应用。建立自己的命令行应用需要基础Joomla 的JApplicationCli类,一个简单的范例如下:

 * A command line cron job to attempt to remove files that should have been deleted at update.
 *
 * @package  Joomla.Cli
 * @since    3.0
 */
class DeletefilesCli extends JApplicationCli
{
    /**
     * Entry point for CLI script
     *
     * @return  void
     *
     * @since   3.0
     */
    public function doExecute()
    {
        // Import the dependencies
        jimport('joomla.filesystem.file');
        jimport('joomla.filesystem.folder');
        // We need the update script
        JLoader::register('JoomlaInstallerScript', JPATH_ADMINISTRATOR . '/components/com_admin/script.php');
        // Instantiate the class
        $class = new JoomlaInstallerScript();
        // Run the delete method
        $class->deleteUnexistingFiles();
    }
}
// Instantiate the application object, passing the class name to JCli::getInstance
// and use chaining to execute the application.
JApplicationCli::getInstance('DeletefilesCli')->execute();

完整的代码请查看 Joomla安装目录 cli\deletefiles.php

守护程序


Joomla也可以做守护进程,官方资料显示只需要继承 JApplicationDaemon 类,但本人目前没有找到具体的案例代码



作者:张敏
原文:http://www.joomlachina.cn/shouce/doc/1916?article_id=1909

获取最新资讯

© 广州市番禺区新造草云信息技术咨询服务部版权所有。
粤ICP备13002429号.

Joomla系列教程

站内链接