ECMALL开发小记

最近在做ecmall的开发,ecmall在开源方面还有待进步啊 , 官方没有提供开发文档 ,也没有关于系统架构组织的贡献, 使用者都要自己从0开始  ,官方论坛连二次开发板块都没有 ,都在哪瞎扯淡,广告一堆  可悲~~~

ECMALL开发小记_第1张图片

网上找到了一位高手自己做的图片,根据ecmall的程序结构图,可以清楚的知道ecmall的五脏六腑!

需要分析的问题:

1、系统请求跳转分析
2、数据库关系模型的实现
3、登录用户信息$this->visitor->get("user_id")的实现
4、模板解析分析
5、页面json对象传输实现
6、缓存分析

1、系统请求跳转分析:

对于这个问题,我们要首先看看下面的这段代码:

index.php: include(ROOT_PATH . '/eccore/ecmall.php'); /* 启动ECMall */ ECMall::startup(array( 'default_app' => 'default', 'default_act' => 'index', 'app_root' => ROOT_PATH . '/app', //加载系统所需要的基础类 'external_libs' => array( ROOT_PATH . '/includes/global.lib.php', ROOT_PATH . '/includes/libraries/time.lib.php', ROOT_PATH . '/includes/ecapp.base.php', ROOT_PATH . '/includes/plugin.base.php', ROOT_PATH . '/app/frontend.base.php', ), )); ecmall.php class ECMall { /* 启动 */ function startup($config = array()) { /* 加载初始化文件 */ require(ROOT_PATH . '/eccore/controller/app.base.php'); //基础控制器类 require(ROOT_PATH . '/eccore/model/model.base.php'); //模型基础类 if (!empty($config['external_libs'])) { foreach ($config['external_libs'] as $lib) { require($lib); } } /* 数据过滤 */ if (!get_magic_quotes_gpc()) { $_GET = addslashes_deep($_GET); $_POST = addslashes_deep($_POST); $_COOKIE= addslashes_deep($_COOKIE); } /* 请求转发 */ $default_app = $config['default_app'] ? $config['default_app'] : 'default'; $default_act = $config['default_act'] ? $config['default_act'] : 'index'; $app = isset($_REQUEST['app']) ? trim($_REQUEST['app']) : $default_app; $act = isset($_REQUEST['act']) ? trim($_REQUEST['act']) : $default_act; $app_file = $config['app_root'] . "/{$app}.app.php"; if (!is_file($app_file)) { exit('Missing controller'); } require($app_file); define('APP', $app); define('ACT', $act); $app_class_name = ucfirst($app) . 'App'; /* 实例化控制器 */ $app = new $app_class_name(); c($app); $app->do_action($act); //转发至对应的Action $app->destruct(); } } //根据app后面所跟的参数,来判断加载对应的控制器类文件,类文件在app文件夹下,对应名称与参数相同,act后面的参数是对应控制器中的操作方法处理请求 //而对应的动作中,会有一个判断: if (!IS_POST){请求前的页面内容的显示}else{请求后的表单处理及处理完成后的页面跳转}。其中包括使用json处理数据 //这里需要提出的是:在控制器中: $this->assign('order', $order_info); //向模板页传递所需要参数的值 $this->display('buyer_order.confirm.html');//跳转到哪个页面 $this->json_result($new_data, 'confirm_order_successed');//使用json的方式传递参数,然后在页面上使用javascript处理请求的跳转

 

你可能感兴趣的:(JavaScript,json,File,Class,action,Path)