腾讯PHP开发规范v1.0

合集下载

PHP开发规范

PHP开发规范

PHP开发规范一、规范前言篇标准化不是特殊的个人风格,它让程序员可以了解任何代码,弄清程序的状况;新人可以很快的适应环境;防止新接触php的人一次次的犯同样的错误;在一致的开发环境下,可以减少人们犯错的机会。

二、命名定义篇局部变量命名使用英文名词、动词,以大写字母作为单词的分隔,其他的字母均使用小写,单词的首个字母使用小写,不使用下划线,例:$repeatCount = '';$delUserSql = '';全局常量命名使用英文名词、动词,所有字母都使用大写,以下划线分隔每个单词,例:define( 'WEBSITE_NAME', '名称' );define( 'WEBSITE_URL', '地址' )数组变量命名使用英文名词、动词,以大写字母作为单词的分隔,其他的字母均使用小写,单词的首个字母使用小写,不使用下划线,以字符串Array为后缀,例:$scopeArray = array();$bookIdArray = array();静态变量命名使用英文名词、动词,以大写字母作为单词的分隔,其他的字母均使用小写,单词的首个字母使用小写,不使用下划线,以字符串Static为后缀,例:function getDirectoryFile(){static $fileArrayStatic = '';static $fileNumStatic = '';...}对象变量命名使用类名称为变量前缀,所有字母都使用大写,以字符串_OBJECT为后缀,例:$USERACCOUNT_OBJECT = new UserAccount();$PAINTINGORDER_OBJECT = new PaintingOrder();类命名使用英文名词,以大写字母作为词的分隔,其他的字母均使用小写,名词的首个字母使用大写,不使用下划线,例:class UserAccount{...}class PaintingOrder{...}方法命名使用英文名词、动词,以大写字母作为词的分隔,其他的字母均使用小写,单词的首个字母使用小写,不使用下划线,例:class UserAccount{function isAccountOk(){...}function addAccount(){...}}方法中参数命名使用英文名词、动词,以大写字母作为词的分隔,其他的字母均使用小写,单词的首个字母使用小写,不使用下划线,例:class UserAccount{function isAccountOk( $accountName ){$this->accountName = $accountName;...}function addAccount( $inputDataArray ){$this->inputArray = $inputDataArray;...}var $accuntName = '';var $inputArray = '';}类属性命名使用英文名词、动词,以大写字母作为词的分隔,其他的字母均使用小写,单词的首个字母使用大写,不使用下划线,对于类属性为某个对象变量,则以字符串Object为后缀,例:class UserAccount{function IsAccountOk(){...}function AddAccount(){...}var $tableName = '';var $databaseObject = '';}文件夹命名严格按照开发所需框架的规定来命名,对于自主开发模块也同样遵守框架的目录结构以及命名方式。

Xiuno编码规范

Xiuno编码规范

Xiuno 全栈工程师编码规范版本:v1.0作者:****************时间:2015/3/20 一、PHP 编码规范与原则前言:本文档是一本面向全栈工程师的编码规范,如果你想成长为全栈式工程师,我相信这个规范是你成功的起点。

总体说来倾向于linux 系统编程的风格,nginx memcached mysql lighttpd 都是采用的小写加下划线的命名风格。

而Windows Java .net 采用的则是匈牙利和骆驼,没有谁好谁坏,习惯就好。

1.1 缩进:每个TAB 键缩进的空白为8 个空格字符宽度。

好处:尽量避免代码缩进,强迫在编写过程中简化逻辑。

1.2 空行与空格:大段代码应该尽量按照功能块用一个空行分割。

函数和函数之间应该有一个空行。

空行内不能包含空格或制表符。

HTML 中不允许出现连续1个以上的空格。

在提示信息或者文档中中文、英文、数字混排的时候,英文和数组应该前后加空格。

1.3 括号:if 紧跟小括号,小括号与大括号之间一个空格,开始大括号与if 同行。

如果业务逻辑简单,尽量使用AND 操作符,优先级比&& 低。

以下代码格式符合标准:if($method == 'GET') {$referer = user_http_referer();$title = $lang['user_create'];include './view/user_create.htm';} else if($method == 'POST') {$email = param('email');$password = param('password');empty($password) AND message(1, “请输入密码!”);}1.3 单引号、双引号在PHP 当中,尽量使用单引号,解析速度比双引号快。

PHP开发规范说明

PHP开发规范说明

1目的2代码规范要求3程序设计原则3.1Model层所有与数据库表本身操作方法,都封装在自己的Model类中,不单独在外提供封装。

每个Model基于ThinkPHP都已经封装好了一套DB操作方法。

3.1.1基类3.1.1.1ModelThinkPHP原生Model基类。

不能修改。

在基于单表的数据CURD操作,使用Model原生成的功能。

如:3.1.1.1.1Insert$role_user_model->add(array("role_id" => $role_id, "user_id" => $uid, "oem_code" => parent::oem_code()));3.1.1.1.2Updateif (IS_POST) {$_POST['id'] = get_current_admin_id();$_POST["oem_code"] = parent::oem_code();$create_result =$this->users_model->field("user_login,user_email,last_login_ip,last_login_time,create_time,user_ activation_key,user_status,role_id,score,user_type,oem_code", true)//排除相关字段->create();if ($create_result) {if ($this->users_model->save() !== false) {$this->success("保存成功!");} else {$this->error("保存失败!");}} else {$this->error($this->users_model->getError());}}3.1.1.1.3Delete$id = intval(I("get.id"));if ($this->users_model->where("id=$id")->delete() !== false) {M("RoleUser")->where(array("user_id" => $id, "oem_code" =>parent::oem_code()))->delete();$this->success("删除成功!");} else {$this->error("删除失败!");}3.1.1.1.4Where$id = get_current_admin_id();$user = $this->users_model->where(array("id" => $id, "oem_code" =>parent::oem_code()))->find();3.1.1.1.5PageThinkPHP已经实现好了分页栏位计算方法。

API接口规范V1.0——制定好规范,才好合作开发

API接口规范V1.0——制定好规范,才好合作开发

API接⼝规范V1.0——制定好规范,才好合作开发返回码规范:统⼀六位 000000 表⽰成功!参数相关返回码预留100000-199999;系统相关返回码预留200000-299999;数据中⼼310000-319999后续项⽬以此类推,后续根据业务扩展情况新增操作码需要提前备案!module = 系统码 optCode = 操作码 optDesc = 操作描述 resultCode = 结果码 resultDesc = 结果描述 bizCode = 业务码 data = 返回数据业务码 = 系统码- + 操作码- + 结果码业务码内容与之前定义的保持⼀致,实例:TaoBao- + Order_ADD- + 330002返回结果⽰例如下所⽰:异常返回:{"optCode": "STORE_ADDMSG","optDesc": "库管中⼼新增消息","resultCode": "330002","resultDesc": "库管中⼼新增消息失败,添加消息到搜索引擎库异常","data": "","module": "HME","bizCode": "TaoBao-Order_ADD-330002","success": false}正常返回:{"optCode": "STORE_ADDMSG","optDesc": "库管中⼼新增消息","resultCode": "000000","resultDesc": "操作成功","data": "","module": "HME","success": true,"bizCode": "Tao-Order_ADD-000000"}API⽂档规范:接⼝名称:products.search接⼝描述:中医药产品接⼝调⽤查询请求参数:响应参数:JSON返回⽰例:{"optCode": "STORE_ADDMSG","optDesc": "数据中⼼新增消息","resultCode": "000000","resultDesc": "操作成功","data": "[{"keywords": null,"tymc": "阿莫西林","tyjx": "颗粒剂","projectId": "44AFC2328D63A53EE05012AC241E3E1B", }]","module": "HME","success": true,"bizCode": "HME-STORE_ADDMSG-000000"}服务码参照:结果码参照:。

PHP程序开发规范及示例

PHP程序开发规范及示例

PHP程序开发规范说明书文件夹命名文件夹名称必须符合CamelCase式的大写字母开头驼峰命名规范。

文件PHP代码文件必须以不带BOM的UTF-8编码。

适当空行可以使得阅读代码更加方便以及有助于代码的分块(但注意不能滥用空行)。

缩进代码必须使用4个空格符的缩进,一定不能用tab键。

关键字以及true/false/nullPHP所有关键字必须全部小写。

常量true、false和null必须全部小写。

namespace以及use声明namespace 声明后必须插入一个空白行。

所有use必须在namespace 后声明。

每条use声明语句必须只有一个use关键词。

use 声明语句块后必须要有一个空白行。

例如:<?phpnamespace VendorgiPackage;use FooClass;use BarClass as Bar;use OtherVendorgiOtherPackage\BazClass;// ... additional PHP code ...类(class),属性(properties)和方法(methods)这里的类是广义的类,它包含所有的类(classes),接口(interface)和traits;类(class)类的命名必须遵循大写字母开头的驼峰式命名规范。

<?phpnamespace VendorgiPackage;class ClassName{// constants, properties, methods}extends 和implements关键词extends 和implements必须写在类名称的同一行。

类的开始花括号必须独占一行,结束花括号也必须在类主体后独占一行。

<?phpnamespace VendorgiPackage;use FooClass;use BarClass as Bar;use OtherVendorgiOtherPackage\BazClass;class ClassName extends ParentClass implements giArrayAccess, \Countable{ // constants, properties, methods}implement的继承列表如果超出140个字符也可以分成多行,这样的话,每个继承接口名称都必须分开独立成行,包括第一个。

PHP 编程规范

PHP 编程规范

PHP 编程规范1.注释的规则1-1.源代码开头注释在每一个源代码的开头部分,要包含文件的编号、简要说明、作者和最后修改日期,注释采用phpDocument的方式。

具体例子如下所示:<?php/****@package Admin(属于哪个功能模块,可以根据程序的功能来划分)*@subpackage Module(这个是可选选项,具体根据程序的功能来划分)*@author Jason<Jasonudoo@>*@copyright 2006-2007 Skyunion Ltd.*@version 1.0*@since*/?>1-2.函数开头注释为了便于使用phpDocument 来进行函数文件的管理,建议在函数的开头的注释如下所示:/*** 发送Refund数据给google** @access public* @param string $google_order 订单编号* @param string $amount 金额* @param string $reason 原因* @param string $comment 备注* @param string $message_log 日志记录文件句柄* @return bool*/该函数注释主要是对函数传入的形参和回传值进行说明,并简要说明该函数的作用。

1-3.函数体内部注释函数体内内的注释统一采用重新起行,以//开头,例如:// be sure equation parameter is presentif (empty($params['equation'])) {showMessage(“xxxxxxx”);return;}2.变量名的命名规则2-1.传递参数命名如果是引用传递的参数,要求参数名以r_开头,以方便清晰分辨2-2.函数返回值命名一般采用$ret开头做为函数返回值中间处理的载体2-3.函数局部变量命名(可参考)该部分主要定义局部变量的命名规则。

PHP项目开发规范文档

PHP项目开发规范文档

PHP项目开发规范文档1.简介PHP是一种开源的脚本语言,广泛用于Web开发。

本文档旨在提供PHP项目开发的规范,以保证代码的可读性、可维护性和可扩展性。

2.代码风格-缩进:使用4个空格进行缩进。

- 命名规范:使用驼峰命名法(camel case)命名变量、函数和类。

-常量命名规范:使用全大写字母和下划线命名。

-注释:用注释来解释复杂的代码逻辑和关键性的功能。

-换行:每行代码长度不应超过80个字符。

当一个表达式太长无法放在一行时,可以分成多行,并使用括号或者点操作符连接。

3.文件和目录结构- 将不同类别的文件分别放在不同的目录中,例如将数据库相关的文件放在一个名为"database"的目录中。

- 使用适当的文件命名来描述文件的功能,例如"UserController.php"。

4.安全性考虑-永远不要相信用户的输入,始终进行数据有效性验证和过滤。

- 使用准备好的语句(prepared statements)和参数绑定(parameter binding)来防止SQL注入攻击。

- 对于敏感数据,如密码或社会安全号码,至少应进行哈希(hash)加密。

5.性能优化-减少数据库查询次数:使用适当的索引、缓存查询结果或使用批量操作来减少数据库查询次数。

-尽量使用更高效的函数和算法来提高代码的性能。

-避免在循环中执行过多的数据库查询或文件读写操作。

6.异常处理- 使用try-catch语句来捕获并处理异常。

- 使用异常层次结构来处理不同类型的异常,例如自定义异常类继承自PHP的Exception类。

7.文档注释-使用文档注释来说明函数和类的使用方法、输入参数、返回值和异常情况。

- 使用标准的文档注释格式,例如PHPDoc。

8.版本控制- 使用版本控制系统(如Git)来管理代码,确保代码的版本可追踪和可恢复。

- 尽量使用分支来开发新功能或修复bug,并在合并到主分支之前进行代码审查和测试。

腾讯PHP开发规范v图文稿

腾讯PHP开发规范v图文稿

腾讯P H P开发规范v 文件管理序列号:[K8UY-K9IO69-O6M243-OL889-F88688]海豹平台开发规范v1.0腾讯科技(深圳)有限公司*版本信息&保密等级目录1引言1.1定义及缩略语1.2参考文档海豹平台WIKI:1.3目的本规范由编程原则组成,融合并提炼了开发人员长时间积累下来的成熟经验,意在帮助形成良好一致的编程风格。

以达到事半功倍的效果,如果有需要本文档会不定期更新。

1.4适用范围如无特殊说明,以下规则要求完全适用于基于海豹平台框架开发的应用,同时也可大部分适用于部门其他PHP项目。

1.5标准化作用当一个软件项目尝试着遵守公共一致的标准时,可以使参与项目的开发人员更容易了解项目中的代码、弄清程序的状况。

使新的参与者可以很快的适应环境,防止部分参与者出于节省时间的需要,自创一套风格并养成终生的习惯,导致其它人在阅读时浪费过多的时间和精力。

而且在一致的环境下,也可以减少编码出错的机会。

缺陷是由于每个人的标准不同,所以需要一段时间来适应和改变自己的编码风格,暂时性的降底了工作效率。

从使项目长远健康的发展以及后期更高的团队工作效率来考虑暂时的工作效率降低是值得的,也是必须要经过的一个过程。

标准不是项目成功的关键,但可以帮助我们在团队协作中有更高的效率并且更加顺利的完成既定的任务。

1)程序员可以了解任何代码,弄清程序的状况2)新人可以很快的适应环境3)防止新接触PHP的开发出于节省时间的需要,自创一套风格并养成终生的习惯4)防止新接触PHP的开发一次次的犯同样的错误5)在一致的环境下,可以减少犯错的机会2目录结构规范2.1框架路径框架引用路径必须采用绝对路径,托管的开发、测试和正式环境必须为:2.2应用目录结构应用需要严格参考以下目录安排代码位置:2.2.1配置config存放应用配置目录,具体参考2.2.2控制器controllers存放控制逻辑的类目录,具体参考2.2.3模型models存放模型定义的类目录,具体参考2.2.4视图views存放视图文件的目录,具体目录参考2.2.5国际化messages存放国际化定义文件的目录2.2.6组件components存放组件的类目录,具体目录参考2.2.7命令commands存放Console命令的类目录,具体目录参考2.2.8临时目录runtime目录权限777,可用于存放临时生成的文件。

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

海豹平台开发规范v1.0腾讯科技(深圳)有限公司*版本信息&保密等级版本更改日期更改要点说明编制审核批准V1.0 2014/12/24 新建wilsonwsongV1.1 2014/12/26 修订rusherding文档保密等级:□机密■内部□公开目录海豹平台开发规范V1.0 (1)1 引言 (5)1.1定义及缩略语 (5)1.2参考文档 (5)1.3目的 (5)1.4适用范围 (5)1.5标准化作用 (5)2 目录结构规范 (6)2.1框架路径 (6)2.2应用目录结构 (6)2.2.1 配置config (7)2.2.2 控制器controllers (7)2.2.3 模型models (7)2.2.4 视图views (8)2.2.5 国际化messages (8)2.2.6 组件components (8)2.2.7 命令commands (8)2.2.8 临时目录runtime (8)2.3路径别名 (8)2.3.1 类型导入 (8)3 PHP编码规范 (9)3.1标签 (9)3.2编码 (9)3.3注释 (9)3.3.1 文件注释 (9)3.3.2 类注释 (10)3.3.3 方法注释 (10)3.3.4 属性注释 (11)3.3.5 其它 (11)3.4命名规则 (11)3.4.1 文件 (11)3.4.2 类 (11)3.4.3 函数/方法 (12)3.4.4 变量名 (12)3.4.5 常量名 (12)3.5书写规则 (13)3.5.1 文件 (13)3.5.2 行 (13)3.5.3 缩进 (13)3.5.4 控制结构 (13)3.5.5 运算符 (16)3.5.6 引号 (16)3.5.7 关键词 (17)3.5.8 函数 (17)3.5.9 类 (17)3.5.10 属性 (18)3.5.11 方法 (18)4 数据库命名规范 (20)4.1命名规范 (20)4.2实体命名 (20)4.2.1 前缀命名 (20)4.2.2 后缀命名 (21)4.3字段命名 (21)4.3.1 后缀命名 (22)4.4字段类型 (22)4.4.1 数值类型 (22)4.4.2 字符类型 (23)4.4.3 时间类型 (23)4.4.4 ENUM&SET (23)4.4.5 LOB 类型 (23)4.5表结构设计 (24)4.5.1 适度冗余 (24)4.5.2 尽量使用NOT NULL (24)4.5.3 索引 (24)5 附件 (24)5.1附录一:MYSQL保留字 (24)1引言1.1定义及缩略语缩略词说明海豹平台运维中心提供的研发平台,提供框架、公共基础组件、公共业务组件加速业务的日常研发工作1.2参考文档海豹平台WIKI:/1.3目的本规范由编程原则组成,融合并提炼了开发人员长时间积累下来的成熟经验,意在帮助形成良好一致的编程风格。

以达到事半功倍的效果,如果有需要本文档会不定期更新。

1.4适用范围如无特殊说明,以下规则要求完全适用于基于海豹平台框架开发的应用,同时也可大部分适用于部门其他PHP项目。

1.5标准化作用当一个软件项目尝试着遵守公共一致的标准时,可以使参与项目的开发人员更容易了解项目中的代码、弄清程序的状况。

使新的参与者可以很快的适应环境,防止部分参与者出于节省时间的需要,自创一套风格并养成终生的习惯,导致其它人在阅读时浪费过多的时间和精力。

而且在一致的环境下,也可以减少编码出错的机会。

缺陷是由于每个人的标准不同,所以需要一段时间来适应和改变自己的编码风格,暂时性的降底了工作效率。

从使项目长远健康的发展以及后期更高的团队工作效率来考虑暂时的工作效率降低是值得的,也是必须要经过的一个过程。

标准不是项目成功的关键,但可以帮助我们在团队协作中有更高的效率并且更加顺利的完成既定的任务。

1)程序员可以了解任何代码,弄清程序的状况2)新人可以很快的适应环境3)防止新接触PHP的开发出于节省时间的需要,自创一套风格并养成终生的习惯4)防止新接触PHP的开发一次次的犯同样的错误5)在一致的环境下,可以减少犯错的机会2目录结构规范2.1框架路径框架引用路径必须采用绝对路径,托管的开发、测试和正式环境必须为:/data/php/framework2.2应用目录结构应用需要严格参考以下目录安排代码位置:webroot/index.php Web 应用入口脚本文件index-test.php 功能测试使用的入口脚本文件assets/ 包含公开的资源文件css/ 包含 CSS 文件images/ 包含图片文件themes/ 包含应用主题protected/ 包含受保护的应用文件modc 命令行脚本modc.bat Windows 下的命令行脚本modc.php 命令行 PHP 脚本commands/ 包含自定义的 'modc' 命令components/ 包含可重用的用户组件config/ 包含配置文件controllers/ 包含控制器的类文件SiteController.php 默认控制器的类文件extensions/ 包含第三方扩展messages/ 包含翻译过的消息(i8n相关)models/ 包含模型的类文件runtime/ 包含临时生成的文件tests/ 包含测试脚本views/ 包含控制器的视图和布局文件layouts/ 包含布局视图文件main.php 所有视图的默认布局site/ 包含 'site' 控制器的视图文件 system/ 包含系统视图文件2.2.1配置config存放应用配置目录,具体参考WIKI人口脚本2.2.2控制器controllers存放控制逻辑的类目录,具体参考WIKI控制器2.2.3模型models存放模型定义的类目录,具体参考WIKI模型2.2.4视图views存放视图文件的目录,具体目录参考WIKI视图2.2.5国际化messages存放国际化定义文件的目录2.2.6组件components存放组件的类目录,具体目录参考WIKI组件2.2.7命令commands存放Console命令的类目录,具体目录参考WIKI之Cli使用2.2.8临时目录runtime目录权限777,可用于存放临时生成的文件。

2.3路径别名1)system: 表示平台框架目录,默认为/data/php/framework。

2)webroot: 表示入口脚本文件所在的目录,一般为应用的根目录。

3)application: 表示应用的基础目录,一般为webroot/protected。

4)ext: 表示包含了所有第三方扩展的目录,一般为webroot/protected/extensions。

通过使用Mod::getPathOfAlias(), 别名可以被翻译为其相应的路径。

例如:ontroll er 会被翻译为/data/php/framework/core/web/CControll er。

2.3.1类型导入使用别名可以很方便的导入类的定义,如导入webroot/protected/components/Controller Mod::import('ponents.Controller');同样可以使用目录导入Mod::import('ponents.*');3PHP编码规范3.1标签PHP程序可以使用<?php ?>或<?= ?>来界定PHP 代码,在HTML页面中嵌入纯变量时,可以使用<?= ?>这样的形式,不可使用其他的标签变种。

纯PHP类文件,文件最后一个?>省略。

3.2编码PHP代码必须只使用不带BOM的UTF-8。

3.3注释1)单行注释:在语句结尾用双反斜杠”// “注释2)多行注释:多行注视以”/*”或“/**”符号开头,以”*/ “符号作为注释结束符。

需要生成文档的注释必须是以“/**”开头,以“*/”结尾。

主流的IDE开发工具(如Eclipse,Zend)会用不同的颜色来区分下面的几种注释。

3.3.1文件注释/***(简述,用在索引列表中)** 详细的功能描述(可略)** @copyright Copyright&copy; 2014, 公司名或作者名* @author ${AUTHOR}* @version $Id: ${FILE_NAME}, v ${VERSION} ${TIME} ${AUTHOR} Exp $ **/3.3.2类注释/***(概要)** 详细的功能描述** @property 类型$prop 属性描述** @author ${AUTHOR}* @package ponents(参见路径别名)**/3.3.3方法注释/*** 功能描述** @param 类型$fields 描述** @return 类型描述*/3.3.4属性注释/*** @var 类型$fields 描述*/3.3.5其它1)适当的使用HTML标记语言来美化文档。

不管是生成HTML格式还是CHM格式的文档手册,文档工具都是先生成HTML文档页面,所以适当的使用<br/>或<b>标签可以美化文档,方便阅读。

2)public和private方法:一般情况下,private私有方法不会暴露给其他开发人员,所以private方法的注释一般以“/*”开头,而public方法以“/**”开头。

3.4命名规则Pascal命名法:所有单词第一个字母大写,其他字母小写。

Camel命名法(驼峰命名法) :除了第一个单词,所有单词第一个字母大写,其他字母小写。

采用英文单词或其组合,便于记忆和阅读,切忌使用汉语拼音来命名。

3.4.1文件1)类文件的名称和类名一致,如类HelloWorld,相应的文件名为HelloWorld.php2)配置文件名小写,如config.php3)嵌套php的view文件使用Camel命名法,第一个字母小写,其他单词的第一个字母大写。

如:addApp.php3.4.2类类命名采用Pascal命名方法,类名应该和文件名相匹配。

3.4.3函数/方法通常方法一般为一个动作或行为动词,函数/方法的命名采用Camel命名方法function run()function runFast()function getBackground()尽量用有意义,描述性的词语来命名用checkForErrors()代替errorCheck(),用dumpDataToFile()代替dataFile()。

有时前缀名是有用的:is - 含义为问一个关于某样事物的问题。

无论何时,当人们看到is就会知道这是一个问题。

相关文档
最新文档