几个月都没有写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-0918-SCGBK 官方版:电商系统的里程碑》 ECMall 2.3.0-0918-SCGBK,这款电商软件曾是众多商家青睐的选择,尤其对于中文用户来说,其SCGBK编码版本更是满足了国内市场的特定需求。然而,随着时代的...
12. **报表统计**:系统提供销售、访问量等数据统计,帮助商家分析经营状况,做出决策。 13. **插件与模块化设计**:ECMall的模块化设计使得扩展和定制变得更加简单,通过安装和配置插件,可以实现更多个性化需求。...
ECMall 2.3.0 正式版更新日志:程序包说明:upload 主程序integrate 整合程序initdata 测试数据安装程序upgrade 升级程序doc 相关文档1、新增 4套店铺风格2、优化 卖家可设置是否启用团购功能3、新增 商品雷达4、...
通过对"ecmall230-0918-scutf8"这一代码版本的分析,我们可以看到ECMall 2.3 在电子商务领域的全面性和实用性。无论是在系统架构、功能实现还是用户体验上,它都展现了优秀的设计理念和技术实力,为电商创业者和...
1. ECMall系统介绍: ECMall全称是“E-Commerce Mall”,它提供了全面的电子商务解决方案,包括商品管理、订单处理、会员系统、支付接口集成、促销活动管理等多个模块。系统采用LAMP(Linux + Apache + MySQL + PHP...
【标签】"ecmall模板"表明这是为Ecmall电子商务系统设计的定制界面,Ecmall是一款开源的B2C网上购物系统,提供强大的商品管理、订单处理、会员管理等功能。"qqmall"和"拍拍模板"则强调了模板的设计灵感和目标市场,...
- ecmall230-0918-scutf8:这是一个可能的压缩包主文件名,表明这是ECMall 2.3.0版本的简体UTF-8语言包,时间戳0918可能代表发布日期,通常包含所有ECMall系统的源代码和相关资源文件。 3. 安装与部署: - 在下载...
ECMall是一个根据融合了电子商务以及网络社区特色的产品,它不仅能使您的电子商务进程变得异常轻松,同时通过和康盛创想相关产品的结合还能进一步提高用户的活跃度以及黏性,从而促进用户的忠诚度。 ECMall 2.3.0...
这些配置对ECMall的正常运行至关重要,它们定义了系统如何解析请求,并决定哪些文件会在运行时被加载。 6. **安全措施**: - 使用`htmlentities()`处理`PHP_SELF`,防止跨站脚本攻击。 - 通过`strtoupper()`确保...
ECMall 2.0系统架构文档主要涵盖了ECMall社区电子商务平台的系统设计和组织方式,旨在为开发者提供深入理解其程序结构的指南。以下是关于ECMall 2.0系统架构的关键知识点: 1. **系统架构概览** - **MVC架构思想**...
ecmall电子商城源代码兼容PHP5.3-PHP7.0,由于ecmall开源代码官网已经不更新升级了,PHP5.5以上就会报错,现在做了一个兼容源代码的调整,测试了PHP5.3.29,PHP5.6.27,PHP7.0.12这三个版本可以兼容,下载资源里面附加文档...
本文将深入探讨ECMall的二次开发过程,涵盖系统请求跳转、数据库关系模型、用户信息获取、模板解析、JSON对象传输和缓存管理等多个关键环节。 首先,我们来了解系统请求跳转的过程。ECMall的入口文件`index.php`中...
描述中提到的“解决了preg_replace_callback等问题”,意味着开发团队可能发现了Ecmall原有代码中使用`preg_replace_callback`时存在的问题,尤其是与安全相关的隐患,并进行了修正。这可能是通过使用其他函数,如`...
### ECmall源码简略分析:数据库关系模型的实现 ECmall是一款开源的电子商务系统,其源码的设计与实现蕴含了丰富的技术细节,尤其是数据库关系模型的构建方式,展现了其在处理复杂数据关联上的独到之处。本文将深入...
开发者可以通过分析和修改这些文件,实现对系统功能的扩展和优化。 压缩包中的文件"ecmall230-0918-scutf8"可能代表的是ECMall的一个特定版本,230可能是版本号,0918可能是发布日期,而scutf8可能指的是字符编码...
### Ecmall 2.X 架构分析与技术指南 #### 概述 Ecmall是一款基于PHP语言的开源电子商务平台,广泛应用于构建各种在线商店系统。为了更好地理解和利用Ecmall进行二次开发,本教程将详细介绍其核心架构、关键技术点...
1. **性能优化**:可能对数据库查询、页面渲染等方面进行了优化,提高系统运行速度,降低服务器资源消耗。 2. **安全性升级**:加强了代码的安全性,防止SQL注入、XSS跨站脚本攻击等安全隐患,保护用户数据安全。 3....
#### 二、系统请求跳转分析 在ecmall系统中,请求处理是非常关键的一部分,它涉及到如何正确地解析用户的请求,并将其导向到相应的处理逻辑。这部分内容是理解整个系统工作流程的基础。 1. **启动过程** - 在`...
ECMall 社区电子商务系统(简称ECMall)是上海商派网络科技有限公司继ECShop 之后推出的又一个电子商务姊妹产品。与 ECShop 不同的是,ECMall 是一个允许店铺加盟的多店系统。它不仅可以帮助众多成熟的网络社区实现...
4. 对于初次接触ECMall的开发者,建议学习相关的PHP和MySQL知识,以便更好地理解和定制系统。 5. 为了保持系统的安全性,定期更新ECMall到最新版本,修补可能的安全漏洞。 总之,ECMall社区电子商务系统为用户提供...