php编码规范
PHP 文件格式
1、对于只包含有 PHP 代码的文件,结束标志("?>")是不允许存在的,PHP自身不需要("?>"), 这样做, 可以防止它的末尾的被意外地注入空白字符。
2、缩进四个空格(4位),可调整IDE的tab设置为四个空格。
3、行结束标志遵循 Unix 文本文件的约定,行必需以单个换行符(LF)结束。不要使用 苹果操作系统的回车(CR)或 Windows 电脑的回车换行组合如(CR,LF)。
4、文件编码 请调整您的编辑器文件编码为UTF-8,并关闭UTF-8 BOM的功能。请不要使用windows自带的记事本编辑项目文件。
第一章 命名约定
命名应遵循下列原则:
尽量使用完整单词或词组,或意义明确的简称
1.1 类命名
类名采用小写字母,目录按下划线分割。
文件名全小写,不许中文,不能数字开头。
1.2 函数和方法
函数名与方法名是以小写字母,下划线区分。(函数名是指框架中加载的公共函数,方法是指类中的方法) 在对象中的方法,声明为 "private" 或 "protected" 的, 名称的首字符必须是一个单个的下划线,这是唯一的下划线在方法名字中的地方。声明为 "public" 的从不包含下划线。 对于面向对象编程,实例或静态变量的访问器总是以 "get" 或 "set" 为前缀。在设计模式实现方面,如单态模式(singleton)或工厂模式(factory), 方法的名字应当包含模式的名字,这样名字更能描述整个行为。注:单态模式一般为 Class::getInstance();工厂模式一般为Widget::factory();
1.3 变量
全小写变量可以使用 "_" 分割。如:楼盘信息 $house_info 声明为 "private"或 "protected" 的 的实例变量名必须以一个单个下划线开头。 避免在Smarty模板中使用$_GET等全局变量(global)禁止:{$smarty.get.page},需要php过滤以后才可以输出到模板。 特殊字符输出转义,入库不转。
1.4 常量
常量名的所有字母必须大写,下划线分割。
第二章 编码风格
2.1 PHP 代码划分
PHP 代码总是用完整的标准的 PHP 标签定界,不允许使用短标签<? ?>,只包含 PHP 代码的文件,不要结束标签
<?php
2.2 字符串
2.2.1 字符串文字
当字符串是文字(不包含变量),应当用单引号来括起来。
$string = 'Example String';
2.2.2 包含单引号(')的字符串文字
当文字字符串包含单引号就用双引号括起来,特别在 SQL 语句中使用。
$sql = "select `id`, `name` from `people` where `name`='Fred' or `name`='Susan'";
2.2.3 变量替换
双引号中的变量用{}括起来。
$greeting = "Hello {$name}, welcome back!";
2.2.4 字符串连接
字符串必需用 "." 操作符连接,在它的前后加上空格以提高可读性,当用 "." 操作符连接字符串,鼓励把代码可以分成多个行,也是为提高可读性。
$company = 'Zend' . ' ' . 'Technologies';
$sql = "select `id`, `name` from `people` "
. "where `name` = 'Susan' "
. "order by `name` ASC ";
2.3 数组
2.3.1 关联数组
当用声明关联数组,array 我们鼓励把代码分成多行,在每个连续行的开头用TAB填补来对齐键和值。
$sample_array = array(
'first_key' => 'firstValue',
'second_key' => 'secondValue'
);
2.4 类
2.4.1 类的声明
用类的的命名规则来命名类。花括号应当从类名下一行,开始类中所有代码必需用四个空格缩进类中所有代码。
class sample_class
{
// 类的所有内容
// 必需缩进四个空格
}
2.5 类成员变量
用变量的的命名规则来命名类成员变量。变量的声明必须在类的顶部,在方法的上方声明。 不允许使用 var,要用 private、 protected 或 public声明它们的可见性。
2.6 函数和方法
2.6.1 函数和方法声明
用函数名命名规则来命名函数和方法。在类中的函数必须用 private、 protected 或 public 声明它们的可见性。象类一样,花括号从函数名的下一行开始。函数名和括参数的圆括号中间没有空格。强烈反对使用全局函数。 下面是可接受的在类中的函数声明的例子:
正确示例:
class foo
{
public function bar()
{
// 函数的所有内容
// 必需缩进四个空格
}
}
错误示例:
class foo
{
public function bar(&$baz)
{
// 函数的所有内容
// 必需缩进四个空格
}
}
注:调用时严格禁止引用传递 返回值不能在圆括号中,这妨碍可读性而且如果将来方法被修改成传址方式,代码会有问题。
class foo
{
//正确示例
public function bar()
{
return $this->bar;
}
//错误示例:
public function bar()
{
return($this->bar);
}
}
2.6.2 函数和方法的用法
函数的参数应当用逗号加空格如(, )。传址方式在调用的时候是严格禁止的,参见函数的声明一节如何正确使用函数的传址方式。带有数组参数的函数,函数的调用可包括 "array" 提示并可以分成多行来提高可读性,同时,书写数组的标准仍然适用。
three_arguments(1, 2, 3);
three_arguments(array(1, 2, 3), 2, 3);
three_arguments(array(
1, 2, 3, 'Zend', 'Studio',
$a, $b, $c,
56.44, $d, 500
), 2, 3);
2.8 控制语句
2.8.1 if/else/elseif
使用 if and elseif 的控制语句在条件语句的圆括号左对齐
if ($a != 2)
{
$a = 2;
}
else
{
$a = 7;
}
2.8.2 Switch
在 "switch" 结构里的控制语句在条件语句的圆括号左对齐。"switch" 里的代码必须有四个空格缩进,在"case"里的代码再缩进四个空格。 switch 语句应当有 default。
switch ($numPeople)
{
case 1:
break;
case 2:
break;
default:
break;
}
2.9 注释文档
2.9.1 格式
所有文档块 ("docblocks") 必须和 phpDocumentor 格式兼容,phpDocumentor 格式的描述超出了本文档的范围,关于它的详情,参考: http://phpdoc.org/
2.9.2 文件
php文件 头部注释
<?php
/**
* 新房楼盘库底层数据类
*
* @author xxx <xxx@leju.com>
*/
2.9.3 类
/**
* 类的简述。
*
* 类的详细描述 (如果有的话)... ...
*
* @author xxx <xxx@leju.com>
*/
class fw_module_gather
{
2.9.4 函数(方法,接口)注释
每个函数,包括对象方法,必须有最少包含下列内容: 函数的描述 所有参数 所有可能的返回值
/**
* 获取一行数据
*
* @param array $condition 查询条件数组
* @param string $field 数据库查询字段数据,默认是全部字段
* @return array
*/
public function fetchRow($condition = '', $field = '*')
{
$test = array();
return $test;
}
2.9.5 程序行间注释
行间注释采用双斜线注释法
//根据城市中文名称,搜索城市详细信息
$city_res = $this->_module_city->search_city($city);
SVN提交说明
SVN提交代码必须加入相关说明文字
SVN提交代码必须填写与本次提交相关的说明文字,不能简单的填写“1.0”、“修复bug”、“上线”之类的说明,必须说明具体添加什么功能,修复具体的问题等,可参考以下SVN提交场景。
SVN提交相关场景
添加功能:
1、添加微信用户群发功能
2、微信用户语音识别功能上线
3、增加E金券在线支付功能
4、微信触屏版增加置业顾问列表页面
修改功能:
1、修改触屏版切换城市功能
2、修改微信后台管理员内容权限功能
3、修改客户消息即时回复功能
修复BUG:
1、修复触屏版首页城市定位不准确问题
2、修复微信用户昵称为空bug
3、修复微信用户分组未同步问题
4、修复微信触屏版看房团页面空白问题
增加文件
1、添加微信操作类库文件
2、添加微博SDK文件
3、添加PHPExcel插件
以上列出的是一些实用场景,提交代码时可参考根据实际代码情况填写说明
php编码规范的更多相关文章
- Android的编码规范
一.Android编码规范 1.学会使用string.xml文件 在我看来,当一个文本信息出现的次数大于一次的时候就必须要使用string.xml 比如一个保存按钮 , 不规范写法: <Butt ...
- PHP 高级编程(1/5) - 编码规范及文档编写
PHP 高级程序设计学习笔记20140612 软件开发中的一个重要环节就是文档编写.他可以帮助未来的程序维护人员和使用者理解你在开发时的思路.也便于日后重新查看代码时不至于无从下手.文档还有一个重要的 ...
- 【原】JAVA SE编码规范
/* * 编码规范: * 1.所有的命名遵循"见名知意"的原则 * 2.所有的命名不允许使用汉字或拼音 * 3.Java的工程命名建议使用小写,比如:oa.crm.cms... * ...
- 浅谈Android编码规范及命名规范
前言: 目前工作负责两个医疗APP项目的开发,同时使用LeanCloud进行云端配合开发,完全单挑. 现大框架已经完成,正在进行细节模块上的开发 抽空总结一下Android项目的开发规范:1.编码规范 ...
- PHP编码规范PSR-2
.note-content { font-family: "Helvetica Neue", Arial, "Hiragino Sans GB", STHeit ...
- Objective-C开发编码规范【转载】
概要 Objective-C是一门面向对象的动态编程语言,主要用于编写iOS和Mac应用程序.关于Objective-C的编码规范,苹果和谷歌都已经有很好的总结: Apple Coding Guide ...
- 前端编码规范之CSS
"字是门面书是屋",我们不会去手写代码,但是敲出来的代码要好看.有条理,这还必须得有一点约束~ 团队开发中,每个人的编码风格都不尽相同,有时候可能存在很大的差异,为了便于压缩组件对 ...
- 前端编码规范之JavaScript
上次浅谈了下关于CSS的编码规范,大部分童鞋持赞同意见,仍存在一些童鞋不太理解这些规范的意义. 如果是个人或者小作坊开发,其实这些所谓的编码规范也没啥意思,因为大家写好的代码直接就给扔到网上去了,很少 ...
- Java Script 编码规范【转】
Java Script 编码规范 以下文档大多来自: Google JavaScript 编码规范指南 Idiomatic 风格 参考规范 ECMAScript 5.1 注解版 EcmaScript ...
- python编码规范
python编码规范 文件及目录规范 文件保存为 utf-8 格式. 程序首行必须为编码声明:# -*- coding:utf-8 -*- 文件名全部小写. 代码风格 空格 设置用空格符替换TAB符. ...
随机推荐
- HDU2896 病毒侵袭
题目大意:给出若干病毒的特征码,不超过500个.每个病毒的特征码长度在20~200之间.现在有若干网站的源代码,要检测网站的源代码中是否包含病毒.网站的个数不超过1000个,每个网站的源代码长度在70 ...
- 02shell编程环境的搭建
02shell编程环境的搭建 [02]Shell编程 02shell编程环境的搭建 在不同的操作系统上搭建shell编程环境 Linux Windows Mac 编辑器的选择 系统环境的搭建 注: 选 ...
- CDC和HDC的区别与转换
CDC和HDC的区别与转换 一.区别与联系HDC是句柄:CDC是MFC封装的Windows 设备相关的一个类:CClientDC是CDC的衍生类,产生对应于Windows客户区的对象HDC是WIN ...
- 关于页面里没有id属性的Javascript上的解决办法
如果页面上只有Textarea,可以用如下方法来遍历其name属性然后赋给id属性:<script> try{ window.onload = setTextAreaIds();setTe ...
- (error) MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk. Commands that may modify the data set are disabled. Please check Redis logs for details about t
运行redis过程中,突然报错如下: (error) MISCONF Redis is configured to save RDB snapshots, but is currently not a ...
- iOS开发项目之MVC与MVVM
MVC MVC,Model-View-Controller,我们从这个古老而经典的设计模式入手.采用 MVC 这个架构的最大的优点在于其概念简单,易于理解,几乎任何一个程序员都会有所了解,几乎每一所计 ...
- Socket与Http方式解析发送xml消息封装中间件jar包
最近项目代码中太多重复的编写Document,不同的接口需要不同的模板,于是重写提取公共部分打成jar包,方便各个系统统一使用~ 提取结构: Http连接方式: import java.nio.cha ...
- CentOS 网卡配置bond4(LACP)
交换机开启LACP,配置聚合. 网卡eno1, eno2, eno3.eno1为管理口,eno2和eno3绑定,配置bond4. 配置eno2: vim /etc/sysconfig/network- ...
- 解析PHP正则提取或替换img标记属性
<?php/*PHP正则提取图片img标记中的任意属性*/$str = '<center><img src="/uploads/images/20100516000. ...
- 停掉Linux固定的进程
ps -ef | grep php 查看进程ID,和信息 kill -s 9 1827 相关命令 ps -ef , ps -aux , pgrep php ,