技术头条 - 一个快速在微博传播文章的方式     搜索本站
您现在的位置首页 --> 源码分析 --> Zen Cart 源码阅读笔记 (一)

Zen Cart 源码阅读笔记 (一)

浏览:2403次  出处信息

深夜失眠,苦闷无处排遣,于是打开电脑读起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下的同名文件(如果存在的话)

建议继续学习:

  1. Nginx源码分析-事件循环    (阅读:4879)
  2. Hive的入口 -- Hive源码解析    (阅读:4778)
  3. Storm源码浅析之topology的提交    (阅读:4369)
  4. Hive源码解析-之-语法解析器    (阅读:4259)
  5. Nginx源码分析-内存池    (阅读:4149)
  6. Nginx源码分析-Epoll模块    (阅读:3932)
  7. Lua GC 的源码剖析 (2)    (阅读:3890)
  8. Lua GC 的源码剖析 (4)    (阅读:3420)
  9. Redis的事件循环与定时器模型    (阅读:3090)
  10. ExtJS源码研究笔记之总评    (阅读:3057)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
© 2009 - 2024 by blogread.cn 微博:@IT技术博客大学习

京ICP备15002552号-1