zencart 运行原理。
zencart 使用一个页面控制器模式,以HTTP_GET参数为基础就,决定要运行的脚本。其中最重要的参数是‘main_page’ 这个get参数。根据参数运行脚本。
每个命令脚本位于/includes/modules/pages 目录中。
例如:main_page=login 会从 /includes/modules/pages/login/ 目录提取命令脚本。每个命令脚本首先会require() /includes/application_top.php 文件。
这个文件是initSystem 的核心。
index.php 做了什么?
入口文件index.php 类似于一个管理者,收到的main_page参数不同调用的页面文件也就不同。
1、 index.php 首先加载 includes/application_top.php 该文件 加载配置文件、定义常量。
2、 index.php 的$language_page_directory 代表当前语言目录,改变量的值和$_SESSION['language']的值息息相关.
3、 加载” includes/modules/pages/PAGE_NAME/”目录中的所有header_php.php文件.
4、 加载html_header.php文件。
html_header.php文件包含了在标记中出现的内容, 默认放在includes/templates/common目录下.
5、 加载main_template_vars.php文件, 该文件根据$_GET['main_page']的值实现了页面的跳转逻辑.该文件的加载过程和html_header.php文件的加载过程异曲同工。
6、 加载on_load脚本
7、 加载tpl_main_page.php文件。 这里定义将选择影响页面布局的模板。
8、 加载application_bottom.php文件。 application_bottom.php文件中将进行一些清理操作.
application_top.php 做了什么?
1.预防黑客攻击。
2.预定义常量。
(1)IS_ADMIN_FLAG:false;
(2)PAGE_PARSE_START_TIME:microtime();
3.调用includes/local/configure.php
4.预定义常量。
DEBUG_AUTOLOAD:false;
5.设置错误报告级别。
6.关闭魔法引号功能。
7.调用includes/configure.php(应用配置文件)。
8.调用位于includes/extra_configures/xxx.php额外配置文件清单。
9.调用includes/initsystem.php 将初始化‘includes/auto_loaders/’目录下的包括config.core.php在内的所有配置文件,
在这些配置文件中利用'控制数组'$autoLoadConfig[]完成语义动作。
10.判断安装状态。
11.调用includes/autoload_func.php (自动加载器定义/解析文件),主要完成控制数组$autoLoadConfig[]的语义解析。
12.根据条件$spider_flag , 调用'includes/counter.php' 文件功能如下。
(1)用于记录用户session变量个数$session_counter。
(2)更新 TABLE_COUNTER_HISTORY:记录每天session量和用户量
(3)更新TABLE_COUNTER:记录网站总访问量。
includes/initsystem.php 做了什么?
includes/auto_loaders/config.core.php // 自动加载类并初始化
includes/auto_loaders/config.canonical.php // 自动加载类并初始化
includes/auto_loaders/config.core.php 做了什么?
$autoLoadConfig[0] 引入文件
$autoLoadConfig[10] 引入文件
$autoLoadConfig[30] $zc_cache = new cache();
$autoLoadConfig[40] 引入文件
$autoLoadConfig[50] $sniffer = new sniffer(); 并 引入文件
$autoLoadConfig[60] 引入文件
$autoLoadConfig[70] 引入文件
$autoLoadConfig[80] if(!$_SESSION['cart']) $_SESSION['cart'] = new shoppingCart();
$autoLoadConfig[90] currencies = new currencies();
$autoLoadConfig[100] 引入文件
初始化 if(!$_SESSION['navigaton']) $_SESSION['navigation'] = new navigationHistory();
初始化 $template = new template_func();
$autoLoadConfig[110] 引入文件
$autoLoadConfig[120] 调用方法: $_SESSION['navigation']->add_current_page(); 并 引入文件
$autoLoadConfig[130] 引入文件 并 初始化 messageStack = new messageStack();
$autoLoadConfig[140] 引入文件
$autoLoadConfig[150] 引入文件
$autoLoadConfig[160] 引入文件 并 初始化 $breadcrumb = new breadcrumb();
$autoLoadConfig[170] 引入文件
$autoLoadConfig[175] 引入文件
$autoLoadConfig[180] 引入文件
摘自: http://blog.csdn.net/phpxin123/article/details/7647737
摘自: http://blog.csdn.net/jesonray/article/details/6841609
浙公网安备 33010602011771号