几个月都没有写blog了,最近研究了一下ecmall的源码,用来学习php,感觉还不错,但想体会里面的思想的精华,还需要再对它进行详细的分析了!
所以计划在这里,对ecmall使用模块分解分析的方法,对它进行仔细的分析,以体会里面的整个php的系统架构,各模块的设计方式。
在这之前,我觉得需要有必要让大家了解ecmall的程序的大致结构,如图所示:
根据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处理请求的跳转
- 大小: 37 KB
分享到:
相关推荐
ECMall 2.3.0 正式版更新日志:程序包说明:upload 主程序integrate 整合程序initdata 测试数据安装程序upgrade 升级程序doc 相关文档1、新增 4套店铺风格2、优化 卖家可设置是否启用团购功能3、新增 商品雷达4、...
ecmall230-0918-scgbk 官方版,如今官方已经停止ecmall程序下载,据了解,以后也不会开发免费下载了。
ecmall230-0918-scgbk.zip
ecmall230-0918-scutf8 代码
ECmall源码简略分析----数据库关系模型的实现
ECMall是一个根据融合了电子商务以及网络社区特色的产品,它不仅能使您的电子商务进程变得异常轻松,同时通过和康盛创想相关产品的结合还能进一步提高用户的活跃度以及黏性,从而促进用户的忠诚度。 ECMall 2.3.0...
ECMall模板 flymak模版,解压后直接放在服务器上打开
ecmall模板 qqmall 拍拍模板
ecmall电子商城源代码兼容PHP5.3-PHP7.0,由于ecmall开源代码官网已经不更新升级了,PHP5.5以上就会报错,现在做了一个兼容源代码的调整,测试了PHP5.3.29,PHP5.6.27,PHP7.0.12这三个版本可以兼容,下载资源里面附加文档...
ECMall v2.3.0 简体UTF-8 正式版 官方需要密码,为新手提供方便。
本文档主要为您讲述ECMall 2.0的系统架构,旨在帮助您更进一步的了解ECMall 2.0 的程序结构,让您可以更加清楚的了解ECMall 2.0的系统组成,设计思想,并可以对其有一个全局的把握。阅读本文档需要您有一定的面向...
ECMall 社区电子商务系统(简称ECMall)是上海商派网络科技有限公司继ECShop 之后推出的又一个电子商务姊妹产品。与 ECShop 不同的是,ECMall 是一个允许店铺加盟的多店系统。它不仅可以帮助众多成熟的网络社区实现...
与 ECShop 不同的是,ECMall 是一个允许店铺加盟的多店系统。它不仅可以帮助众多成熟的网络社区实现社区电子商务还可以推进各种地域性、垂直性明显的门户网站的电子商务进程。 ECMall是一个根据融合了电子商务以及...
商业源码-编程源码-ECMall v2.2.1 简体utf-8.zip
商业源码-编程源码-ECMall v2.2.1 繁体utf-8.zip
下载ECMALL插件后解压相应目录中,打开ECMALL系统管理后台-》网站-》短信管理,填写你的短信配置信息并提交。
本教程以Ecmall2.X为基准编写的,原为公司研发技术部门内部培训教材,为了让更多的新手尽快掌握这套系统,现面向社会公众开放下载。本文档主要论述了模型的多对多,多对一等关系,更加深层的展示了Ecmall不同层面的...
ecmall核心文件ecmall.php分析
ecmall商城ecmall商城ecmall商城ecmall商城ecmall商城
本教程以Ecmall2.X为基准编写的,目的为提高公司研发技术部门的技术知识覆盖,让Ecmall新手快速上手,教材中围绕着MVC模式展开,主要论述了模型的多对多,多对一等关系,更加深层的展示了Ecmall不同层面的底层函数,...