php开发规范
文件格式 对于只含有 php 代码的文件,我们将在文件结尾处忽略掉 "?>"。
使用四个空格代替制表符TAB,保证跨客户端编程器软件的灵活性【编辑器设置】。
每行代码若超出了屏幕宽度,需要手动强制换行,增加可读性。
每行结尾不允许有多余的空格,删除文件末尾空格,但是末尾应该空一行【编辑器设置】。
请将编辑器设置对所有程序使用UNIX格式保存。
命名约定1. 常量定义全部为大写,可使用_连接符
例如:
define('TEST', 'Hello World!');
const TEST = 'Hello World!';
2. 变量使用小写字母+下划线组成,其中private和protected变量要使用_前缀
例如:
public $per_page = 10;
protected $_user = null;
private $_db = null;
3. 函数名使用小写字母+下划线组成
例如:function get_client_ip();
4. 类名和方法名采用“驼峰法命名”,首字母小写,其后每个单词首字母大写,不允许使用下划线,并且加上特定的修饰符,名字采用“动词+宾语”的形式,不允许出现拼音,长度不宜超过5个单词,尽量描述清楚方法的作用
例如:
public function getUserInfo();
get(动词)UserInfo(宾语)
5. 参数名采用“驼峰法命名”,参数个数不宜超过5个,其他的请使用数组形式
6. 注释采用PHPDoc形式,明确方法用途和参数含义
例如:
/**
* addData
* 添加数据
*
* @param integer $uid 用户ID
* @param array $data 分享内容
* @return boolean
*/
代码规范1. 当一个字符串是纯文本组成的时候(即不含有变量),以单引号(')作为定界符。
2. 变量替换中的变量只允许用 {$+变量名} 的形式
例如:$greeting = "Hello {$name}, welcome back!";
3. 连接符“.”,“=”和其他运算符中间使用空格,增加可读性
例如:
包括,在比较运算符(>、<、>=、<=、==、===、!=、<>、!==)、赋值运算符(=)、数学运算符(+、-、*、/、%)、位运算符(&、|、^、~、>>、<<)、逻辑运算符(!、&&、||)、冒号(:)、
问号(?)、字符串连接运算符(.)、字符串连接赋值运算符(.=)前后,以及左括号(()前(函数调用例外)、逗号(,)后请使用空格进行间隔。
echo 'My name is' . $name;
$name = 'bosnzt';
$num ++;
4. 方法和函数中的参数使用逗号+空格“, ”方式隔开,()与{中间要有空格,与方法名之间不能有空格,{和方法名保持在同一行,方法与方法之间也要空一行
例如:
public function addData($uid, $data = array()) {
// TODO
}
5. array 类型使用逗号+空格“, ”方式隔开,关联数组尽量分成多个行,并且保证每行的键与值的对齐,以保持美观,“=>”两边要有空格
例如:
$data = array(1, 2, 3);
$data = array(
'name' => 'bosnzt',
'uid' => '100000',
);
6. 无论是if、for、foreach、while、do while 等等,都必须使用{},并且不能在同一行,}结束之后都要空一行,里面的条件使用逗号+空格“, ”方式隔开,且保持缩进
例如:
if (!$uid) {
// TODO
}
for ($i; $i< 100; $i ++) {
// TODO
}
foreach ($data as $key => $val) {
// TODO
}
7. "switch" 语句的内容必须以四个空格缩进,"case" 条件控制的内容必须再加四个空格进行缩进
例如:
switch ($indentedSpaces) {
case 2:
echo "错误";
break;
case 4:
echo "正确";
break;
default:
break;
}
8. 单行注释//和文字要用空格隔开,和代码头部对齐,并且和上行代码空一行,多行注释*和文字用空格隔开
例如:
/*
* 1、多行注释尽量用来描述逻辑,防止以后忘记了一些重要逻辑
* 2、或者在开发过程中有些逻辑很复杂,在自己很难理清楚的情况之下,先将逻辑写在多行注释里,有助于在开发的时候不会乱
*/
$name = $web_id ? '网页' : '个人';
// 重新赋值,与上行代码保持空行
if (!$uid) {
$name = 'Tom';
}
9. SQL关键词语大写,其他使用小写
SELECT field1 AS something, field2, field3
FROM table a, table b
WHERE (this=that) AND (this2=that2)
10. if/foreach/for嵌套尽量不要超过4层,超过4层嵌套,可读性非常的差,绝大多数情况都是可以优化的
11. 方法中的代码行数控制在80行之内,多出的请尽量拆分成多个子方法
PHP 5.3 新特性1.添加了命名空间的支持.
2.添加了静态晚绑定支持.
3.添加了跳标签支持.
<?php
goto a;
echo 'Foo';
a:
echo 'Bar';
?>
4.添加了原生的闭包(Lambda/匿名函数)支持.
<?php
array_map(function closure($arg) use ($var,....) {}, $array);
5.新增了两个魔术方法, __callStatic(动态访问静态方法变为可能.) 和 __invoke(对象可以被执行).
<?p