ECSHOP编码命名规范

合集下载

商品编码编制规则

商品编码编制规则

零售贸易项目俗称零售商品,主要是指在零售终端通过POS扫描结算的商品。

一听啤酒、一瓶洗发水和一瓶护发素的组合包装都可以视为零售商品。

步骤一:为不同的商品项目编制不同的商品标识代码——零售商品的标识代码结构在我国,零售商品的标识代码主要采用GTIN的三种数据结构,即EAN/UCC-13、EAN/UCC-8和UCC-12。

通常情况下,选用13位的数字代码结构用EAN-13条码表示。

只有当产品出口到北美地区并且客户指定时,才申请使用UCC-12代码(用UPC条码表示)。

中国厂商如需申请UPC商品条码,须经中国物品编码中心统一办理。

EAN/UCC-13和EAN/UCC-8的结构分别如图1、图2、图3所示。

1)EAN/UCC-13的数据结构(1)当前缀码为690、691时,EAN/UCC-13的代码结构如图1所示。

(2)当前缀码为692、693时,EAN/UCC-13的代码结构如图2所示。

A、厂商识别代码厂商识别代码是由中国物品编码中心统一向申请厂商分配。

厂商识别代码左起三位由国际物品编码协会分配给中国物品编码中心的前缀码。

B、商品项目代码商品项目代码由厂商根据有关规定自行分配。

C、校验位用来校验其他代码编码的正误。

它有固定的计算方法,参见GB 12904附录。

2)EAN/UCC-8的代码结构如图3所示。

A、商品项目识别代码是EAN编码组织在EAN分配的前缀码(X8X7X6)的基础上分配给厂商特定商品项目的代码。

为了保证代码的惟一性,商品项目识别代码须由中国物品编码中心统一分配。

B、校验位用来校验其他代码编码的正误。

它有固定的计算方法,参见GB 12904附录。

——零售商品标识代码的编码原则在编制贸易项目的商品标识代码时,应遵守以下基本原则:(1)惟一性惟一性原则是商品编码的基本原则。

是指同一商品项目应分配相同的标识代码,不同的商品项目必须分配不同的标识代码。

不同商品名称、商标、种类、规格、数量、包装类型的商品应视为不同的商品项目,必须编制不同的标识代码,以保证编码的惟一性。

代码规范及编码原则

代码规范及编码原则

代码规范及编码原则代码规范和编码原则是为了提高代码的可读性、可维护性和可扩展性而制定的一系列规则和准则。

它们是在软件开发中非常重要的一部分,可以确保团队成员之间的协作,减少潜在的错误和bug,并且降低后期维护的成本。

下面是一些常用的代码规范和编码原则。

1.代码注释在代码中添加适当的注释是一种良好的编程习惯。

注释应该解释代码的意图、算法或者解决问题的思路。

注释不应该只是重复代码的功能,而应该提供更多的上下文和解释。

2.命名规范变量、函数、类等的命名应该有意义且易于理解。

命名应该使用驼峰命名法(CamelCase),并且尽量避免缩写和简写。

命名应该反映出实体的用途和功能,不应该只是简单的描述。

3.代码缩进和格式化使用适当的缩进和格式化可以提高代码的可读性。

通常使用四个空格缩进,并且在适当的位置添加换行符和空行,使代码的结构更清晰。

另外,注意避免代码行过长,应该适当折行。

4.函数和类的长度函数和类的长度应该适中,不应该过长。

过长的函数和类会增加代码的复杂性,降低可读性和可维护性。

应该尽量将函数和类分解为更小的、相互独立的模块,以便于重用和修改。

5.注重代码的可重用性在设计和编写代码时应该注重可重用性。

尽量将功能相似的代码抽象为函数、类或模块,以便于在其他地方进行重用。

重复代码会导致代码冗余,并且增加后续维护的工作量。

6.错误处理和异常处理在编写代码时应该考虑到可能出现的错误情况,并且做适当的错误处理和异常处理。

对于可能引发异常的代码块,应该使用try-catch语句进行捕获和处理。

同时,错误和异常应该有适当的错误消息和日志记录以便后续排查和修复。

7.单一职责原则(SRP)每个函数、类和模块应该只负责一项功能或任务。

单一职责原则可以提高代码的可读性和可维护性,使模块之间更加独立,降低耦合度。

8.开放-封闭原则(OCP)开放-封闭原则要求代码应该对扩展是开放的,对修改是封闭的。

即通过添加新的代码来扩展功能,而不是直接修改已有的代码。

05ecshop项目概述

05ecshop项目概述

回顾PDO:PHP数据对象,作为了一个数据抽象层来负责向下连接各种指定的数据库。

1.加载PDO扩展2.创建PDO对象(连接数据库):new PDO($dsn,$user,$pass)3.组织SQL并发送a)PDO::exec:没有数据(结果集返回),返回受影响的行数b)PDOStatement PDO::query:有结果集,返回结果集对象4.处理返回结果a)结果集记录数:PDOStatement::rowCount,columnCountb)取出结果集:fetch(PDO::FETCH_BOTH,FETCH_ASSOC,FETCH_NUM),fetchAll,fetchColumn,fetchObject5.关闭PDO(unset(PDO对象))预处理1.发送预处理:PDOStatement PDO::prepare2.准备执行数据a)传入一个参数数据:PDOStatement::execute($array)b)在执行前绑定变量:bindParam,bindValue,使用PDOStatement::executePDO事务处理PDO::beginTransaction:开启事务PDO::commit:确认提交PDO::rollback:回滚PDO异常处理1.设置错误处理模式为异常模式:PDO::setAttribute(PDO::ATTR_ERRORMODE,PDO::ERRMODE_EXCEPTION)2.指定异常语句库去捕捉异常try{//可能出现错误的语句}catch(PDOException $e){//抓取错误并处理$e->getTrace()}反射:Reflection将一个类的内部的结构给反映出来:ReflectionClass获取常量:getConstants获取属性:getProperties获取方法:getMethodsECSHOPEcshop是一个电子购物商城,功能非常完善。

数据库设计编码规范

数据库设计编码规范

数据库设计编码规范SQL Serve数据库设计规范一、数据库命名规范:对象前缀命名:前缀命名一般用小写表的前缀:业务模块组名前缀数据列的前缀:一般采用列的数据类型做前缀存储过程前缀:udp ,系统存储过程(sp)自定义函数前缀:udf(User define function)视图前缀:udv(User Define View)表示用户自定义视图自定义规则前缀:udr(User Define rule)用户自定义规则自定义约束前缀:uck(User Checker)用户自定义约束索引前缀:idx(Index)表示索引主键前缀:pk(primary keys)表示主键数据列的前缀示例:编号 1 2 3 4 5 6 7数据类型char varchar int smallint datetime money numeric 前缀 c vc i si dt m n 编号8 9 10 11 12 13数据类型decimal float bit binary image text前缀 d f b b img tx二、数据库设计规范:1、每个表中都可以考虑添加的的几个有用的字段RecoredID,记录唯一编号,不建议采用业务数据作为记录的唯一编号CreationDate,在SQL Server 下默认为GETDATE()RecordCreator,在SQL Server下默认为NOT NULL DEFAULT USERRecordVersion,记录的版本标记;有助于准确说明记录中出现null 数据或者丢失数据的原因2、数据类型:字符类型一般不建议采用char而采用varchar数据类型,除非当这列数据的长度特别固定时可以考虑用char。

数值类型如果表示金额货币建议用money型数据,如果表示科学记数建议用numeric数据类型记录标识一般采用int类型标识唯一一行记录。

自增or 非自增3、索引:所有的表都应该有一个主键索引,这对提高数据库的性能很有帮助根据使用频率决定哪些字段需要建立索引,选择经常作为连接条件、筛选条件、聚合查询、排序的字段作为索引的候选字段。

消费类电子商务商品编码规范编制说明

消费类电子商务商品编码规范编制说明

《消费类电子商务商品编码规范》编制说明一、任务来源目前,我省正积极申建“中国(郑州)跨境电商综合试验区”,方案已报国务院。

电子商务已经成为河南经济的一张新名片,网络经济正成为河南转型升级的动力源、结构优势调整的大枢纽,经济整体转型的新起点。

然而,目前对电子商务产品分类还没有统一的标准,电子商务企业对产品管理多处于随意化状态,造成数据急速膨胀后的分类混乱等问题。

分类标准不统一不仅降低了统计及数据交换和信息共享的效率,还增加了消费者获取目标商品信息的时间,大大降低了用户体验度。

本标准的制定主要依据国家有关法律、法规及河南省地方标准管理办法,并结合我省电子商务具体特点,有针对性的提出消费类电子商务商品编码规范,具有很高的可操作性和指导性。

二、编制目的本标准规定了消费类电子商务商品编码规范,适用于在电子商务活动中对消费类商品进行信息化编码。

标准的实施有助于引导消费者快速选购所需产品,提高消费者购物效率,给消费者提供更便捷的购物体验;为电子商务企业建立内部相对稳定的商品分类编码体系提供了模板,便于做好大数据分析、不同领域电商企业间数据交换、信息共享等工作;规范统一物资分类与编码,是电子商务标准化工作的一项基础,是对政府电子商务管理机制的一大补充,不仅能推进电子商务产业的发展,也有利于推进电子商务标准化工作。

三、编制原则本标准按照GB/T1.1-2009《标准化工作导则第1部分:标准的结构和编写》的要求和规定编写本标准内容。

本标准应具有科学性、先进性。

同时应充分考虑到现阶段我省消费类电子商务商品的编码需求,使其具有可操作性。

四、编制过程2015年5月河南省标准化研究院作为标准的承担单位,组织成立了标准研究起草组。

2015年6月-2015年8月标准起草组首先多方借鉴其它省份地方标准的编制经验,赴上海、杭州和重庆等地调研,全面了解标准的内涵及编制方法。

其次结合生产实际对收集的资料进行分析整理,为标准编制提供技术支撑,采取专家咨询,组织召开座谈会,对标准所涉及的内容、范围、适用性等内容进行了研讨。

ECSHOP编码规范

ECSHOP编码规范

ECSHOP编码规范v2.1.2 ECSHOP R&D TEAM1.编辑器设定1.1. 缩进所有的缩进使用空格取代Tab制表符。

PHP文件采用4个空格的缩进,HTML文件以及HTML文件中嵌入的Javascript代码采用2个空格的缩进;单独的Javascript以及CSS文件采用4个空格的缩进。

1.2. 字符编码所有PHP、HTML文件均保存为No Bom UTF-8的字符编码。

1.3. EditPlus 和Dreamweaver 相关设定1.3.1.EditPlus相关设定1.3.2.Dreamweaver设定2.命名约定2.1. 变量命名变量名应当全部小写,并且词语之间以单个下划线分隔。

例如:$current_user 是正确的,但是$currentuser 和$currentUser 就不正确。

名称应当是描述性的,并且简明。

我们自然不希望使用冗长的句子作为变量名,但是多输入几个字符总好于疑惑于某个变量到底是干什么用的。

2.2. 循环计数器允许使用一个单字符变量名的唯一情形是当它作为一个循环计数器的时候。

在这种情况下,外层循环的计数器应当始终是$i。

如果有一个循环处于这个循环的内部,它的计数器应当是$j,进而是$k,等等。

如果循环的计数器是一个已经存在并且名字有意义的变量,本规范并不适用。

例如:for ($i = 0; $i < $outer_size; $i++){for ($j = 0; $j < $inner_size; $j++){foo($i, $j);}}2.3. 函数名称函数也应该描述性地命名。

这里我们并非在用C 编程,我们不希望写出诸如“stristr()”此类的函数来。

同上,使用单词间用单下划线分隔的小写名称。

函数名称中某处最好有一个动词。

较好的函数名称如print_login_status(),get_user_data(),等等。

2.4. 函数参数参数遵循和变量名字相同的约定。

ECSHOP数据库结构详细说明

ECSHOP数据库结构详细说明

ECSHOP数据库结构详细说明ECSHOP数据库结构详细说明(1)表的结构`ecs_account_log`==用户账目日志表CREATE TABLE IF NOT EXISTS `ecs_account_log` (`log_id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID号',`user_id` mediumint(8) unsigned NOT NULL COMMENT '用户登录后保存在session中的id号,跟users表中的user_id对应', `user_money` decimal(10,2) NOT NULL COMMENT '用户该笔记录的余额',`frozen_money` decimal(10,2) NOT NULL COMMENT '被冻结的资金',`rank_points` mediumint(9) NOT NULL COMMENT '等级积分,跟消费积分是分开的',`pay_points` mediumint(9) NOT NULL COMMENT '消费积分,跟等级积分是分开的',`change_time` int(10) unsigned NOT NULL COMMENT '该笔操作发生的时间',`change_desc` varchar(255) NOT NULL COMMENT '该笔操作的备注,一般是,充值或者提现。

也可是是管理员后台写的任何在备注',`change_type` tinyint(3) unsigned NOT NULL COMMENT '操作类型,0为充值,1为提现,2为管理员调节,99为其他类型', PRIMARY KEY (`log_id`),KEY `user_id` (`user_id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='用户帐号情况记录表,包括资金和积分等' AUTO_INCREMENT=42 ;-- --------------------------------------------------------------------------------------------------------------------------------------------------------------------表的结构`ecs_ad` 广告表(位置,类型,名称,链接,图片,开始,结束,广告主相关信息,点击,是否显示)CREATE TABLE IF NOT EXISTS `ecs_ad` (`ad_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID号',`position_id` smallint(5) unsigned NOT NULL DEFAULT '0' COMMENT '0,站外广告;从1开始代表的是该广告所处的广告位,同表ad_position中的字段position_id的值',`media_type` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT '广告类型,0,图片;1,flash;2,代码;3,文字', `ad_name` varchar(60) NOT NULL COMMENT '该条广告记录的广告名称',`ad_link` varchar(255) NOT NULL COMMENT '广告链接地址', `ad_code` text NOT NULL COMMENT '广告链接的表现,文字广告就是文字或图片和flash就是它们的地址,代码广告就是代码内容',`start_time` int(11) NOT NULL DEFAULT '0' COMMENT '广告开始时间',`end_time` int(11) NOT NULL DEFAULT '0' COMMENT '广告结束时间',`link_man` varchar(60) NOT NULL COMMENT '广告联系人',`link_email` varchar(60) NOT NULL COMMENT '广告联系人的邮箱',`link_phone` varchar(60) NOT NULL COMMENT '广告联系人的电话',`click_count` mediumint(8) unsigned NOT NULL DEFAULT '0' COMMENT '该广告点击数',`enabled` tinyint(3) unsigned NOT NULL DEFAULT '1'COMMENT '该广告是否关闭,1,开启;0,关闭;关闭后广告将不再有效,直至重新开启',PRIMARY KEY (`ad_id`),KEY `position_id` (`position_id`),KEY `enabled` (`enabled`)) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='广告列表配置表,包括站内站外的图片,文字,flash,代码广告' AUTO_INCREMENT=6 ;-- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------表的结构`ecs_admin_action`==管理权限分配(父类ID,权限代码)CREATE TABLE IF NOT EXISTS `ecs_admin_action` (`action_id` tinyint(3) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID号',`parent_id` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT '该id项的父id,对应本表的action_id字段', `action_code` varchar(20) NOT NULL COMMENT '代表权限的英文字符串,对应汉文在语言文件中,如果该字段有某个字符串,就表示有该权限',PRIMARY KEY (`action_id`),KEY `parent_id` (`parent_id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='管理员权限列表树' AUTO_INCREMENT=104 ;-- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------表的结构`ecs_admin_log`==管理日志(登陆时间,登陆管理员ID,操作描述,IP)CREATE TABLE IF NOT EXISTS `ecs_admin_log` (`log_id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID号',`log_time` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '写日志时间',`user_id` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT '该日志所记录的操作者id,同ecs_admin_user的user_id',`log_info` varchar(255) NOT NULL COMMENT '管理操作内容', `ip_address` varchar(15) NOT NULL COMMENT '管理者登录ip', PRIMARY KEY (`log_id`),KEY `log_time` (`log_time`),KEY `user_id` (`user_id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='管理员操作日志表' AUTO_INCREMENT=158 ;-- -----------------------------------------------------------------------------------------------------------------------------------------------------------------------表的结构`ecs_admin_message`==管理员留言(发送者ID,接收者ID,发送日期,阅读日期,是否已读,是否删除,标题,内CREATE TABLE IF NOT EXISTS `ecs_admin_message` (`message_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID号',`sender_id` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT '发送该留言的管理员id,同ecs_admin_user的user_id', `receiver_id` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT '接收消息的管理员id,同ecs_admin_user的user_id,如果是给多个管理员发送,则同一个消息给每个管理员id发送一条',`sent_time` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '留言发送时间',`read_time` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '留言阅读时间',`readed` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '留言是否阅读,1,已阅读;0,未阅读',`deleted` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '留言是否已经是否已经被删除,1,已删除;0,未删除', `title` varchar(150) NOT NULL COMMENT '留言的主题',`message` text NOT NULL COMMENT '留言的内容',PRIMARY KEY (`message_id`),KEY `sender_id` (`sender_id`,`receiver_id`),KEY `receiver_id` (`receiver_id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='管理员留言记录表' AUTO_INCREMENT=7 ;-- -------------------------------------------------------- 表的结构`ecs_admin_user`==管理员管理(用户名,email ,密码,加入时间,最后登陆时间,最后登陆IP,权限等)CREATE TABLE IF NOT EXISTS `ecs_admin_user` (`user_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID号,管理员代号',`user_name` varchar(60) NOT NULL COMMENT '管理员登录名',`email` varchar(60) NOT NULL COMMENT '管理员邮箱',`password` varchar(32) NOT NULL COMMENT '管理员登录秘密加密串',`add_time` int(11) NOT NULL DEFAULT '0' COMMENT '管理员添加时间',`last_login` int(11) NOT NULL DEFAULT '0' COMMENT '管理员最后一次登录时间',`last_ip` varchar(15) NOT NULL COMMENT '管理员最后一次登录ip',`action_list` text NOT NULL COMMENT '管理员管理权限列表', `nav_list` text NOT NULL COMMENT '管理员导航栏配置项',`lang_type` varchar(50) NOT NULL,`agency_id` smallint(5) unsigned NOT NULL COMMENT '该管理员负责的办事处的id,同ecs_agency的agency_id字段。

ecshop_v2.7.3数据库表结构

ecshop_v2.7.3数据库表结构

ECShop 2.7.2版本,数据库表注:1、颜色为蓝色的字,是本人所写,有待讨论验证的地方。

2、颜色为红色的字,是新增的字段。

(改文档是基于网上下载的老版本的数据字典修改而成,已经检查了所有字段,修改的修改,增加的增加)。

ecs_account_log //用户账目日志表ecs_ad //广告表(位置,类型,名称,链接,图片,开始,结束,广告主相关信息,点击是否显示)ecs_admin_action //管理权限分配(父类ID,权限代码)(感觉像是规定好的一些数据,安装的时候就有)ecs_admin_log //管理日志(登陆时间,登陆ID,操作描述,IP)ecs_admin_message //管理留言(发送id,接收id,发送日期,阅读日期,是否已读,是否删除,标题,内容)ecs_admin_user //管理员管理(用户名,email,密码,加入时间,最后登陆时间,最后登陆IP,权限等)ecs_adsense //广告相关统计(来源广告,来源位置,点击)ecs_ad_custom //ecs_ad_position //广告位(名称,宽,高,描述,样式)ecs_affiliate_log //(用户推荐的操作日志?)ecs_agency //广告相关统计(来源广告,来源位置,点击)ecs_area_region //配送区域关联(配送区域ID,具体地址ID)ecs_article //文章(分类ID,标题,内容,作者,作者email,关键字, 类型,是否显示,添加时间,文件地址,打开类型)ecs_article_cat //文章分类(名称,类型,关键字,描述,排序,是否导航显示)ecs_attribute //商品属性ecs_auction_log //商品拍卖表ecs_auto_manage //自动上下架表ecs_back_goods //ecs_back_order //ecs_bonus_type //红包类型(名称,金额, 发放起日期,发放结束期,使用起始日期, 使用结束日期, 发放类型, 金额下限,(按订单发放),金额上限)ecs_booking_goods //缺货登记(登记用户ID,email,电话,商品ID,描述,数量,登记时间,是否已处理,处理管理员,处理时间,处理备注)ecs_brand //品牌(名称,logo,描述, 链接,排序,是否显示)ecs_card // 祝福贺卡(名称,图片,费用,免费额度,描述)ecs_cart//购物车(用户ID,session_id,商品ID,商品编号,商品名称,市场价,购买价,数量,属性,是否真实商品,扩展代码,父类ID, 类型,是否赠品,能否处理)ecs_category //商品分类(名称,关键字,描述,父类ID,排序,是否有子类,模板文件,数量单位,是否导航显示)ecs_cat_recommend // 什么推荐?ecs_collect_goods //收藏(用户ID,商品ID,收藏时间)ecs_comment //评论(类型,类型ID,email,用户名,内容,评星,添加时间,IP,状态, 父类ID)ecs_crons //计划任务ecs_delivery_goods //ecs_delivery_order //ecs_email_list //邮件订阅列表ecs_email_sendlist //邮件队列ecs_error_logecs_exchange_goods //交换商品??ecs_favourable_activity //优惠活动ecs_feedback //用户留言(父类ID,用户ID,用户名,内容,评星,添加时间,IP,状态,父类ID)ecs_friend_link//友情链接(名称,链接,logo,排序)ecs_goods //商品(分类ID,名称,点击,品牌ID,供应商名称,库存,重量,市场价,售价,fitting_price(?), 促销开始日期,结束日期, 警告数量,关键字, 简介,描述,缩略图,图, 原图,是否成为赠品,扩展代码,是否上架,是否单独销售,是否关联,配件关联,是否赠品,能否世为赠品,单位,添加时间,排序,是否回收,精品,新品,推荐,热销,红包ID,更新日期,商品类型, 商品备注,首页轮播)ecs_goods //商品信息ecs_goods_activity //促销活动ecs_goods_article //商品文章关联(gid,aid)ecs_goods_attr //商品属性(商品ID,图片,描述,缩略图, 原图)ecs_goods_catecs_goods_gallery //商品相册(商品ID,图片,描述,缩略图,原图)ecs_goods_type //商品类型(名称,状态)ecs_group_goodsecs_keywordsecs_link_goods //商品关联(商品ID,关联ID,单双向)ecs_mail_templates //邮件样式(代码,是否html,名称, 样式,最后修改日期)ecs_member_price //会员价(商品ID,会员等级,会员价)ecs_navecs_order_action //订单处理(订单ID,商品ID,商品名称,商品编号,商品数量,市场价,订单价,商品属性,配送数量,是否真实商品,扩展代码,父类ID,是否赠品)ecs_order_goods //订单一商品(订单ID,商品ID,商品名称,商品编号,商品数量,市场价,订单价,商品属性,配送数量,是否真实商品,扩展代码, 父类ID,是否赠品)ecs_order_info //订单详细信息ecs_pack // 包装(名称,图片,费用,免费额,描述)ecs_package_goods //包装商品ecs_payment //支付工具(代码,名称,费用,描述,排序, 配置,状态,is_cod(?))ecs_pay_log //支付记录ecs_plugins //插件(代码,版本,库,签名, 安装日期)ecs_productsecs_region //地方数据ecs_reg_extend_infoecs_reg_fieldsecs_roleecs_searchengineecs_sessions //保存session的ecs_sessions_dataecs_shipping //配送(代码,名称,描述,保价费,状态)ecs_shipping_area //配送区域(序列配置)ecs_shop_config //设置(父类ID,代码,类型,范围,文件夹,值)ecs_snatch_log // 夺宝奇兵出价记录ecs_stats //访问记录(时间,IP,访问次数,浏览器,系统,语言,地区,来源域名,来源地址,关键字,进入链接)ecs_suppliersecs_tag //用户标签ecs_template //模板区域(文件名,区域,模板库,排序,id,数量,类型,模板)ecs_topicecs_usersecs_user_account //会员账户(用户ID,管理员,总额,添加时间,支付时间,管理备注,用户备注,处理类型,支付工具,是否支付)ecs_user_addressecs_user_bonus //红包ecs_user_feedecs_user_rankecs_virtual_cardecs_volume_priceecs_vote //在线调查。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

ECSHOP编码规范1.编辑器设定1.1. 缩进所有的缩进使用空格取代Tab制表符。

PHP文件采用4个空格的缩进,HTML文件以及HTML文件中嵌入的Javascript代码采用2个空格的缩进;单独的Javascript以及CSS文件采用4个空格的缩进。

1.2. 字符编码所有PHP、HTML文件均保存为No Bom UTF-8的字符编码。

变量名应当全部小写,并且词语之间以单个下划线分隔。

例如:$current_user 是正确的,但是$currentuser 和$CurrentUser 就不正确。

名称应当是描述性的,并且简明。

我们自然不希望使用冗长的句子作为变量名,但是多输入几个字符总好于疑惑于某个变量到底是干什么用的。

1.3. 循环计数器允许使用一个单字符变量名的唯一情形是当它作为一个循环计数器的时候。

在这种情况下,外层循环的计数器应当始终是$i。

如果有一个循环处于这个循环的内部,它的计数器应当是$j,进而是$k,等等。

如果循环的计数器是一个已经存在并且名字有意义的变量,本规范并不适用。

例如:for ($i = 0; $i < $outer_size; $i++){for ($j = 0; $j < $inner_size; $j++){foo($i, $j);}}1.4. 函数名称函数也应该描述性地命名。

这里我们并非在用C 编程,我们不希望写出诸如“stristr()”此类的函数来。

同上,使用单词间用单下划线分隔的小写名称。

函数名称中某处最好有一个动词。

较好的函数名称如print_login_status(),get_user_data(),等等。

1.5. 函数参数参数遵循和变量名字相同的约定。

我们不希望一堆这样的函数:do_stuff($a, $b, $c)。

在大部分情况下,我们希望仅仅看看函数的声明,就知道怎样使用它。

1.6. 类的名称类的名称首先必须是一个有意义的英文单词或者词组。

同时在书写格式上为了使类名和函数、变量有一个区别,我们要求类的名称全小写的写法,并且加上cls_作为前缀。

例如:/* 错误的写法 *class image_handle {}class imagehandle {}class imageHandle {}/* 正确的写法 *class cls_imagehandle {}1.7. 总结这里的基本哲学是不要为了偷懒而伤害了代码的清晰。

但是,必须由一些常识来掌握这种平衡;例如,print_login_status_for_a_given_user() 做得就过火了——这个函数命名为print_user_login_status() 更好些,或只是print_login_status()。

2.代码布局这里是一个头部的模板,所有的PHP文件的开始都必须包含下面的内容:/*** ECSHOP 升级程序之控制器*================================================================= ===========* 版权所有 (C) 2005-2007 康盛创想(北京)科技有限公司,并保留所有权利。

* 网站地址: *----------------------------------------------------------------------------* 这是一个免费开源的软件;这意味着您可以在不用于商业目的的前提下对程序代码 * 进行修改、使用和再发布。

*================================================================= ===========* $Author$* $Date$* $Id$*/2.1. 注释的写法根据流行的注释写法我们要求对于代码段的注释采用以下的方式来书写:/* 注释内容 */对于单行的注释则使用下面的注释形式,注意在//之后有一个空格:define(…IN_ECS‟, ture); // 注释内容2.2. 始终包含大括号这是因为懒于多敲两个字符而给代码清晰带来问题的又一个情形。

尽管有些结构的主体部分只有一行,千万不要丢掉大括号。

绝对不要。

例如:/* 这些都错了 */if (condition) do_stuff();if (condition)do_stuff();while (condition)do_stuff();for ($i = 0; $i < size; $i++)do_stuff($i);/* 这些是对的 */if (condition){do_stuff();}while (condition){do_stuff();}for ($i = 0; $i < size; $i++){do_stuff();}2.3. 大括号放在哪儿这一点是网络上争论比较多的一部分,但是我们将使用一种可以用一句话总结的风格:大括号始终独占一行。

终止大括号还应当与起始大括号处在同一列上。

例如:if (condition){while (condition2){...}}else{...}for ($i = 0; $i < $size; $i++){...}while (condition){...}function do_stuff(){...}2.4. 符号之间使用空格这是不用太费事就可以保持代码可读性的另一个简单,容易的步骤。

无论何时你写一个赋值,表达式,等等,始终在符号之间保留一个空格。

基本上,把代码当作英语来写。

在变量名和运算符之间插入空格。

不要在起始括弧后或者终止括弧前加空格。

不要在逗号或者分号之前加空格。

一些例子很好地展示了这一点。

例如:/* 每一对给出了错误方式,紧跟正确方式。

*/$i=0;$i = 0;if($i<7) ...if ($i < 7) ...if ( ($i < 7)&&($j > 8) ) ...if (($i < 7) && ($j > 8)) ...do_stuff( $i, "foo", $b );do_stuff($i, "foo", $b);for($i=0; $i<$size; $i++) ...for($i = 0; $i < $size; $i++) ...$i=($j < $size)?0:1;$i = ($j < $size) ? 0 : 1;2.4.1.字符串连接符当使用字符串连接符时必须在句点(.)两侧加上空格。

// 错误的写法$str = …<img src=”‟.$thumb_url.‟” />‟;$str = …<img src=”‟ .$thumb_url. …”/>‟;// 正确的写法$str = …<img src=”‟ . $thumb_url . …” />‟;2.5. 运算符优先级你知道PHP 中所有运算符的详细的优先级吗?我也不知道。

不要猜。

始终用括号强制一个表达式的优先级可以使优先级明显,这样你知道它会做些什么。

例如:/* 结果是什么?谁知道? */$bool = ($i < 7 && $j > 8 || $k == 4);/* 现在你确定这里我在做什么了。

*/$bool = (($i < 7) && (($j < 8) || ($k == 4)))2.6. 空行的使用谁也不愿意看到挤在一堆的无序的代码。

我们在写代码的时候总是会利用一些空行来增加代码可读性。

合理的利用空格来区分代码段会使代码的逻辑思路更加明确。

我们强行规定的空行有以下两种情况:1、<?php 之后必须有且只有1个空行2、?> 之前必须有且只有1个空行3、两个函数之间必须有1个空行。

4、return、die、exit之前如果有其他语句的情况下应加上一个空行。

在代码中我们不允许仅有空格的空行,并且不允许在行尾有多余的空格。

3.SQL 语句3.1. SQL 代码布局既然我们都在使用不同的编辑器设置,不要尝试去做诸如在SQL 代码中实现列对齐此类的麻烦事。

要做的是,不管用何种方法,把语句断行到它们单独的行上去。

这里有一个SQL 代码看上去应该是什么样子的示例。

注意在哪里断行,大写,和括号的用法。

例如:SELECT field1 AS something, field2, field3FROM `table` a, `table` bWHERE (this = that) AND (this2 = that2)3.2. 表名和字段值SQL语句中的表名必须使用`符号包含起来;同时所有字段值的变量名必须包含在单引号之内,即便是整数值也必须有单引号。

例如:// 这是错误的INSERT INTO mytable (col1, col2, col3)VALUES ($val1, $val2, $val3)// 这是正确的INSERT INTO `mytable` (col1, col2, col3)VALUES (…$val1‟, …$val2‟, …$val3‟)3.3. SQL select 语句在已知需要查询的字段的前提下,不允许使用如下的代码:SELECT * FROM `mytable`取而代之的写法是将每一个字段名写上去,请不要偷懒。

SELECT col1, col2, col3 FROM `mytable`在需要获得已知记录数量情况下,请使用LIMIT offset, count 的方式,尽量不要使用无LIMIT 的SELECT 语句。

在需要或者满足条件的记录数量的情况下,请使用SELECT count(*|expr) FROM 的方式,尽量不要使用SELECT expr FROM 的方式。

需要进行逻辑运算的时候,尽量不要使用不等于,可以使用大于或者小于的方式。

3.4. SQL insert 语句SQL INSERT 语句可以写成两种不同方式。

或者你明确指明要插入的列,或者你已经知道数据中各列的顺序,不用详细指定它们。

我们希望使用前一种方法,也就是详细说明插入哪些列。

这意味着应用程序代码不会依赖于数据库中字段的顺序,也不会因为我们增加另外的字段而崩溃(当然,除非它们被指定为NOT NULL)。

例如:# 这不是我们想要的INSERT INTO `mytable`VALUES ('something', 1, 'else')# 这是正确的。

相关文档
最新文档