在本节将简单的介绍一下Joomla的整个执行流程,介绍的重点包括但不限于包含的关键文件、调用的关键方法、触发的触发器等。如有不正确的地方,可以留言讨论。
joomla是一个单入口CMS文件,一切的请求都从index.php文件开始。我们将尝试介绍你输入一个joomla网站的地址,到如何生成页面的整个流程。
假设你输入的地址是 http://www.zmax99.com/index.php 或者 http://www.zmax99.com/index.php?option=com_zmaxshop&view=item&id=1 或者 http://www.zmax99.com/articles/test.html
只要您的网站是基于joomla搭建的,那么它开始请求的文件都是网站根目录下的index.php这个文件。
当请求达到网站根目录下的 index.php 时,一个全新的Joomla执行周期开始了,其中包括:
加载 Joomla 框架及其应用程序正常工作所需的所有基本类,框架还会检查是否有存在configuration.php这个配置文件,如果不存在那么就会重定向到 安装程序(installtion),开始安装一个新的Joomla
创建JApplication 对象并且初始化,开始处理session状态(如果存在,怎使用现有的session,如果不存在则新建一个session)。
加载configuration.php这个配置文件,在这个文件中记录了数据库的连接信息。
调用路由器,路由器负责将 URL 转换为关联的命令数组,反之亦然。这些命令数组将作为url参数发送到PHP的$_GET超全局变量中。在参数数组中有一个重要的变量是option.这个变量决定了系统将会执行哪一个组件。
随着组件的执行,文档对象被创建。文档对象将需要展示的内容存储在内存中,在输出到浏览器之前,开发者可以依据需要动态的修改文档中的数据(也就是页面显示的内容)。系统会从数据库中读取中当前的模板设置,并且加载当前需要使用的模板。之后joomla将控制权完全交给组件,组件输出什么完全由组件自己决定。
接下来是页面的渲染,除了上一步的组件数据,模块和通知消息也被渲染并放置在它们在模板中定义的位置
最后一步是将页面输出到浏览器。
需要注意的是,在上述执行周期的各个阶段,都会调用插件事件点,从而允许各种事件干扰和扩展 Joomla 功能。
进入入口点文件index.php
import.php
configuration.php
joomla.application.menu (菜单相关的类)
joomla.user.user
joomla.environment.uri
joomla.html.html
joomla.utilities.utility
joomla.event.event
joomla.event.dispatcher
joomla.language.language
joomla.utilities.string
JFactory::getApplication('site')
JApplication::getInstance 创建并且返回一个实
例.
调用 JSite::initialise
初始化应用程序application. parent::initialise
JFactory::getUser
(初始化用户对象)
joomla.user.user
JFactory::getSession 创建会话.
JPluginHelper::importPlugin('system') 导入系统插件
onAfterInitialise
JSite::route
JSite::authorize
afterRoute
onAfterRoute
调度(Dispatching)
JSite::dispatch
afterDispatch
onAfterDispatch
渲染(Rendering)
JSite::render
afterRender
onAfterRender
JResponse::toString
(在这里可以设置是否压缩)