`
we1818
  • 浏览: 61913 次
  • 性别: Icon_minigender_1
  • 来自: 湖州
社区版块
存档分类
最新评论

joomla源码-index.php的解析

阅读更多


documentroot/index.php ,以及 template/***/index.php ,可以称为万源之源,因为可以说所有的页面都是这两个文件的成果。

/index.php 是所有页面程序的起点,让我们来看看这个文件到底做了什么?



define( '_JEXEC', 1 );   //标志这是一个跟文件

define('JPATH_BASE', dirname(__FILE__) );  //取得Document root,就是 /index.php所在的绝对路径
define( 'DS', DIRECTORY_SEPARATOR ); // 定义目录分隔符

require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' ); //defines.php定义了一些目录变量,以后详细的写
require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' );

//framework.php 是另一个非常重要的文件,在framework.php读入了config.php中定义的变量,同时
//framework中引入了一些的基础类,例如JFactory,JUser等等

//全局对象,工厂类JFactory,JFactory符合设计模式中的工厂模式,基本生成的对象大部分是单例模式,接下来我详细描述JFactory,JFactory 在/libraries/joomla/factory.php中定义,
$mainframe =& JFactory::getApplication('site');

//取得JApplication 对象,JApplication是一个工厂类,提供了一些指定对象的生成,并提供了一系列的api函数

//application初始化过程,设置语言,并缺的editor的设置,并生成Juser对象
$mainframe->initialise();

// 引入system 组的插件
JPluginHelper::importPlugin('system');

// 触发初始化完毕后定义的pluging响应事件
$mainframe->triggerEvent('onAfterInitialise');

//route() 函数,根据url生成进行解析,设置JRequest
$mainframe->route();

// authorization
$Itemid = JRequest::getInt( 'Itemid');
$mainframe->authorize($Itemid);

// 触发route后plugin
JDEBUG ? $_PROFILER->mark('afterRoute') : null;
$mainframe->triggerEvent('onAfterRoute');

// 根据JRequest的的option参数,dispatch到那个组件,也就决定页面的内容部分是那个组件生成
$option = JRequest::getCmd('option');
$mainframe->dispatch($option);

// 触发dispatch后的plugin
JDEBUG ? $_PROFILER->mark('afterDispatch') : null;
$mainframe->triggerEvent('onAfterDispatch');

//页面的渲染过程,生成整个页面html
$mainframe->render();

// trigger the onAfterDisplay events
JDEBUG ? $_PROFILER->mark('afterRender') : null;
$mainframe->triggerEvent('onAfterRender');

echo JResponse::toString($mainframe->getCfg('gzip'));

以上是 /index.php的内容,从这个index.php的引出了几个重要的文件需要我们去注意

/includes/defines.php
/includes/framework.php
/libraries/joomla/application.php
/libraries/joomla/factory.php

接下来我们主要看看这些文件。
分享到:
评论

相关推荐

    joomla入门-new.rar

    Joomla是一种广泛使用的开源内容管理系统(CMS),源自2001年的Mambo项目。Mambo是由澳大利亚的Miro国际公司开发的,最初是为了提供一个功能强大的网站构建平台。然而,随着Miro公司试图将其转向商业化路线,这与...

    php-7.3.22.tar.gz

    Apache的模块化设计使得集成PHP变得简单,通过安装mod_php模块,我们可以让Apache直接解析并执行PHP代码。在配置Apache时,需要确保正确设置DocumentRoot(网站根目录),并将PHP解释器指向PHP的安装路径,以便...

    joomla入门-new.pdf

    **Joomla 入门指南** Joomla 是一款流行的开源内容管理系统(CMS),广泛用于构建、管理和维护各种类型的网站。这款强大的工具提供了丰富的功能,让非程序员也能轻松搭建和管理网站。本文将深入介绍Joomla的基本...

    php-7.3.20.tar.gz

    《PHP 7.3.20源码解析与应用指南》 PHP,全称为“PHP:Hypertext Preprocessor”,是一种广泛使用的开源脚本语言,尤其适用于Web开发,可嵌入到HTML中使用。PHP 7.3.20是其在2020年发布的一个稳定版本,为开发者...

    joomla附件插件attachments-3.2.3.zip

    Joomla 是一个非常流行的开源内容管理系统(CMS),用于构建网站和在线应用程序。Attachments 插件是专门为 Joomla 设计的一个功能,旨在增强其内置的文件管理能力。Attachments 3.2.3 版本是一个更新,提供了对上传...

    Kunena-Forum-v171-Joomla17-ChinesePack.zip

    Joomla1.7l论坛组件,中文版。 Kunena 汉化大礼包中 addon 目录内容简介: com_kunenaimporter_*:从其它论坛(例如 phpBB)转换到 Kunena 的工具; mod_kunenalatest_*:“最新帖子”模块; mod_kunenalogin_*:...

    Joomla_1.5.11-Stable-Full_Package-zh-CN.zip

    Joomla!是一套获得过多个奖项的内容管理系统(Content Management System, CMS)。Joomla!采用PHP+MySQL数据库开发,可运行在Linux、Windows、MacOSX、Solaris等各种平台上。Joomla!除了具有新闻/文章管理,文档/图片...

    com_rsform_2.5-3.x_4-22-14.zip

    Pro的组件,这是一款针对Joomla CMS(内容管理系统)的表单构建工具。该组件允许用户在Joomla网站上创建、定制和管理各种表单,如联系表单、调查问卷、注册表格等。版本号“2.5-3.x”表明这是适用于Joomla 2.5到3.x...

    php-7.2.4.tar.gz

    《PHP 7.2.4:深入解析与应用实践》 PHP(PHP:Hypertext Preprocessor)是一种广泛使用的开源脚本语言,尤其在Web开发领域有着极高的应用价值。PHP 7.2.4是PHP发展的一个重要版本,它在性能、安全性和功能上都做了...

    com_myblog_pro_Joomla-1.5.x_v3.0.320

    【标题】"com_myblog_pro_Joomla-1.5.x_v3.0.320" 是一个针对Joomla CMS的扩展,它提供了一个博客功能组件。这个组件名为 "com_myblog",专为Joomla 1.5.x版本设计,并且已经更新到了v3.0.320版,意味着它可能包含了...

    kickstart-3.3.2.zip for Joomla!1.5

    PHP是一种服务器端脚本语言,广泛用于Web开发,这里它被用来实现 Kickstart 的各种功能,如解析备份文件、重建数据库连接、恢复网站文件等。 在实际使用过程中,用户通常需要先通过AKEEBA备份系统创建一个完整的...

    Joomla_core-v3.4.1-chinese.zip

    3. **index.php**:这是网站的入口文件,处理所有HTTP请求并负责启动Joomla框架。它是Joomla工作流程的起点。 4. **LICENSE.txt**:包含软件的许可协议,对于开源项目Joomla,它通常是GPL(GNU General Public ...

    php-5.3.3.tar.gz

    《PHP 5.3.3与Joomla插件:深入解析》 PHP 5.3.3是一款历史悠久的PHP版本,它在2010年7月28日正式发布,为当时的Web开发提供了强大的动力。这个版本包含了诸多改进和新特性,使其在处理Web应用程序时更为高效和灵活...

    php-5.6.22.tar.gz

    1. **内容管理系统(CMS)**:如WordPress、Drupal和Joomla等依赖PHP运行。 2. **电子商务平台**:如Magento、OpenCart等电商系统。 3. **论坛软件**:如Discuz!、PHPBB等。 4. **社交网络**:如Facebook早期的...

    civicrm-5.50.4-drupal.tar.gz标准FOSS应用程序,用于协会管理,活动,活动.gz

    它支持多语言,跨平台,并可与多种CMS(内容管理系统)如WordPress、Joomla和Drupal集成。 2. **版本5.50.4**:这是Civicrm的特定版本号,表示该软件在发布时包含的特性和修复。每个版本都会包含新功能、性能优化、...

    php-5.3.22.tar.gz

    对于Apache,可以通过`mod_php`模块将PHP解析器集成到服务器中;对于Nginx,则需要配置FastCGI。具体配置方法会因服务器类型和版本而异,一般会在php-5.3.22的文档中有详细说明。 四、安全与优化 1. **安全**:限制...

    Joomla 1.5.20 适合各种(1.5.x版本)中文简体繁体语言包--mtkos.com提供

    Joomla 1.5.20 适合各种(1.5.x版本) 中文简体繁体语言包--mtkos.com提供 已经安装好的 只需要上传 language目录下的文件和administrator内的文件,安装文件夹下的语言包就不需要上传啦

    PyPI 官网下载 | wodby-3.0.dev45-py3.5.egg

    Wodby是一个针对Web开发的开源平台,它提供了一种简单的方法来管理Docker容器,特别是对于PHP、Drupal、Joomla和WordPress等Web应用的开发和部署。通过使用Wodby库,开发者可以轻松地与Wodby平台进行交互,实现自动...

    CMS程序Joomla v1.5.1 繁简英文版-joomla-cn-yeyo.rar

    包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。【适用人群】:适用...

    Joomla_3.8.8-Stable-Full_Package

    Joomla!是一套获得过多个奖项的内容管理系统(Content Management System, CMS)。Joomla!采用PHP+MySQL数据库开发,可运行在Linux、Windows、MacOSX、Solaris等各种平台上。

Global site tag (gtag.js) - Google Analytics