Zen Cart 源码阅读笔记 (一)
深夜失眠,苦闷无处排遣,于是打开电脑读起Zen Cart的代码来了。
从index.php开始读,这个文件相当重要,注释里说index.php represents the hub of the Zen Cart MVC system,也就是说它代表了Zen Cart MVC系统的中心。Zen cart 的Wiki页也有相当完整的介绍:开发者API教程 整个流程如下:
- Load application_top.php - see {@tutorial initsystem} 载入application_top.php
- Set main language directory based on $_SESSION[\'language\'] 基于$_SESSION[\'language\']设置主语言目录
- Load all *header_php.php files from includes/modules/pages/PAGE_NAME/ 从includes/modules/pages/PAGE_NAME/加载全部全部*header_php.php文件
- Load html_header.php (this is a common template file) 载入html_header.php(此为通用模板文件)
- Load main_template_vars.php (this is a common template file) 载入main_template_vars.php通用模板文件
- Load on_load scripts (page based and site wide) 装载 on_load 脚本(基于页面和整站)
- Load tpl_main_page.php (this is a common template file)载入tpl_main_page.php通用模板页
- Load application_bottom.php 载入application_bottom.php
先切换到includes/application_top.php,看看里面做了些什么,首先对$_FILES,$_GET,$_COOKIE,$_SESSION检查,确保其不含有非法的或者系统保留的键和值,其中对$_GET还要检查某些特定参数的值不能以http开头或含有//,并且这些参数的strlen不能大于43(因为42是宇宙终极密码?),检查到非法时会发生406 Not Acceptable错误,整个系统执行终止。
然后设置一些常量(是否为管理界面IS_ADMIN_FLAG,页面执行开始时间PAGE_PARSE_START_TIME,Debug脚本DEBUG_AUTOLOAD),并把对php.ini的arg_separator.output设置为&,这个是php生成url的参数连接的分隔符,在http_build_query函数里可能会用到。见
http_build_query, 然后载入includes/local/configure.php的本地配置文件(如果存在的话),如果STRICT_ERROR_REPORTING常量设置为True,则会显示错误,不设置时不显示错误报告,在生产环境下不要设置这个常量。关闭magic-quotes支持,即在php5.3以下版本set_magic_quotes_runtime(0),在5.4以下版本ini_set(‘magic_quotes_sybase’, 0);接着加载includes/configure.php的配置文件,如果不存在,则进入显示错误页(提示安装),页面执行终止。
includes/configure.php定义了一些URL和目录常量,还有数据库连接信息和SQL缓存类型。默认为文件缓存。
回到application_top.php来,DIR_FS_CATALOG如果没有被定义,则配置文件无效,也会进入显示错误提示安装的页面。
继续载入额外的配置文件,即includes/extra_configures下的php文件,其中enable_error_logging.php为Debug的相关设置,
然后设置了一个按前缀载入核心文件的变量$loader_file,在这里为config.core.php,并没有在此加载,可能在以后将会用到。
然后包含includes/initsystem.php,在这里加载和解析autoloader文件,即includes/autoloaders目录内的文件,其中includes/autoloaders/overrides/下文件将会覆盖include/autoloaders下的同名文件(如果存在的话)
建议继续学习:
- Nginx源码分析-事件循环 (阅读:4912)
- Hive的入口 -- Hive源码解析 (阅读:4798)
- Storm源码浅析之topology的提交 (阅读:4400)
- Hive源码解析-之-语法解析器 (阅读:4283)
- Nginx源码分析-内存池 (阅读:4171)
- Nginx源码分析-Epoll模块 (阅读:3952)
- Lua GC 的源码剖析 (2) (阅读:3906)
- Lua GC 的源码剖析 (4) (阅读:3441)
- Redis的事件循环与定时器模型 (阅读:3113)
- ExtJS源码研究笔记之总评 (阅读:3076)
扫一扫订阅我的微信号:IT技术博客大学习
- 作者:Falcon 来源: 雕刻时光
- 标签: Zen 源码
- 发布时间:2012-08-02 23:58:57
- [56] IOS安全–浅谈关于IOS加固的几种方法
- [55] Oracle MTS模式下 进程地址与会话信
- [54] 图书馆的世界纪录
- [54] android 开发入门
- [52] 如何拿下简短的域名
- [51] Go Reflect 性能
- [50] 【社会化设计】自我(self)部分――欢迎区
- [47] 读书笔记-壹百度:百度十年千倍的29条法则
- [39] 程序员技术练级攻略
- [34] 视觉调整-设计师 vs. 逻辑