ECMall 2.X 架构分析与技术指南.doc

  1. 1、本文档共26页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ECMall 2.X 架构分析与技术指南

ECMall 2.X 架构分析与技术指南 一、系统架构分析: 根据文件目录结构分析得到ECMall为MVC系统架构。 控制器(Controllers)分析: 在ECMall中分2种控制器,FrontendApp(前端)和BackendApp(后端),我们可以依据基础控制器创建自己的控制器。 控制器文件的命名规则:类名(首字母大写) + .app + .php; 文件位置:一般放置在相应的app目录中; 类名规则:类名+App 访问规则:/index.php?app=控制器类act=方法param=… 注意:第一个控制器,必须拥有自己的语言文件,如MallBaseApp的子类语言文件位于\languages\sc-gbk\下,而模块Module类的语言文件则位于模块的文件夹中,即使语言文件中仅有return array()的空数组。若没有相应的语言文件,程序将会报错。 现在我们试着写一个自己的控制器: ?php /** * 控制器演示类,此处采用单入口模式,方法与模型对应; * 与ECMall本身的多入吕,控制器模型对应有所区别; * @author CTO */ class Demo1App extends MallbaseApp{ /** * 默认控制器方法 * @return void */ Function index(){ Echo __METHOD__; } /** * Goods方法对应Goods模型 * @return void */ function goods(){ //实例化goods $goods = m(‘goods’); $id = empty($_GET[‘id’]) ? 0 : intval($_GET[‘id’]); if(!$id){ echo “Warning! Hacking!”; return; } //获取goods信息 $goods_info = $goods-get_info($id); //输出goods信息 $result = print_r($goods_info); } //此处的test自定义模型将在下面讲述,暂时略过; function test(){ $test = m(‘test’); $data = array(‘name’=’建航’,”name2”=”科技”);//name,name2对应表字段 $test-addData($data); } } 测试访问:/index.php?app=demo1goodsid=3 模型(Model)分析: ECMall模型分为业务模型与普通模型,二者皆继承自核心类的BaseModel模型; 模型、插件的继承关系 模型:可以理解为数据实体类,对应数据库表字段,一个实体表示一张表,每个实例为一行记录。ECMall的大部分模型与表有对应关系,仅业务模型没有表联系(操作业务如CRUD)。 创建自己的模型: 模型文件的命名规则:类名(首字母大写)+.model+.php; 文件位置:一般放置在相应的/includes/models目录中; 类名规则:类名+Model 调用规则:可能选用控制器对应模型的多入口方式 ,也可以选用控制器对应模型的单入口方式。 首先建立一张表Test(id,name,name2); 编写test.model.php,代码如下: ?php class TestModel extends BaseModel{ /** * $table为表映射,$prikey为映射表的主键,$alias为表查询时的别名,主要体现在SQL语句里,$_name为模型的名称,这四个值都与ECMall模型数据库操作(很独到的一种操作方式,非通用的Adodb+SQL的方式)有关,如果不想用SQL语句查询的话,而是使用模型自身提供的数据操作功能,那么至少要把$table,$prikey体现出来;至于$alias与$_name的存在与否并不重要。只有类似于我们需要得到模型名称时,才会将$_name进行实现,例如:function getName(){return $this-_name;}。 */ /** * 增加数据演示 * @author kichijyo; * @return void */ function addData($data){ $this-add($data);//该处的add()继承自BaseModel类 } } 测试访问:/index.php?app=demo1act=test 下面我们试着建一对主、从表的模型关系: 首先我们建2张表,一个是ecm_test从来(id,stu_id相对于ecm_test2表的外键,name),另一个为ecm_test2主表(stu_id相对于ecm_test2的主

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档