Home > php教程 > php手册 > PHP网站代码编写规范

PHP网站代码编写规范

WBOY
Release: 2016-06-21 08:57:16
Original
1199 people have browsed it

PHP网站代码编写规范

一、 变量命名

a) 所有字母都使用小写

b) 首字母根据变量值类型指定

i. 整数i

ii. 浮点数f

iii. 字符串s

iv. 布尔值b

v. 数组a

vi. 对象o

vii. 资源r

viii. 混合类型m

c) 使用’_’作为每一个词的分界

例如:

$i_age_max = 10;

$f_price = 22.5;

$s_name =‘harry’;

$b_flag = true;

$a_price = array();

$o_object = new class();

$r_file = fopen();

$m_var = array_combine($a_name, $a_flag);
 

二、 类命名

a) 使用大写字母作为词的分隔,其他的字母均使用小写,即驼峰格式。

b) 名字的首字母使用大写

c) 不要使用下划线(’_')

d) interface接口最好使用大写字母I,并以Interface结尾

例如:

class NameOneTwo

class Name

interface IExampleInterface ()

三、 方法命名

a) 使用大写字母作为词的分隔,其他的字母均使用小写

b) 名字的首字母使用大写,声明为 “private” 或 “protected” 的,使用’_’为前缀

c) 不要使用下划线(’_')

d) (与类命名一致的规则)

e) 对象的访问器总是以 “get” 或 “set” 为前缀,当使用设计模式如 单态模式(singleton)或工厂模式(factory),方法的名字应当包含模式的名字,这样容易从名字识别设计模式。

例如:

class NameOneTwo{

public function DoIt() {};

protect function _HandleError() {};

private function _SayHello() {};

}

四、 类属性命名

a) 属性名前缀应以属性值类型指定(具体参照变量命名规则)

b) 前缀后采用与类命名一致的规则

c) 私有属性采用’_’为前缀

例如:

class NameOneTwo {

public function VarAbc() {};

public function ErrorNumber() {};

public $iAge;

private $_iAge;

}

五、 方法中参数命名

a) 参照类属性命名

例如:

class NameOneTwo {

public function VarAbc($sMsg) {};

}

六、 全局变量

a) 全局变量应该带前缀‘g’

b) 其余参照变量命名规则

例如:

global $gi_Age;

global $ga_Price

七、 定义命名/全局常量

a) 全局常量使用’_’分割每个单词

b) 所有字母使用大写

例如:

define(‘E_ERROR_MISSING_PARA’, 501);

八、 函数

a) 所有的字母采用小写,使用’_’分割每个单词

例如:

function some_bloody_function(){

}

九、 大括号{}规则

a) 将大括号放置关键词下方的同列处或同行,推荐放到同行

例如:

function some_bloody_function() {

}

if (true) {

// code

}

十、 缩进/制表符规则

a) 使用制表符缩进

例如:

function some_bloody_function() {

if (true) {

//code

}

}

十一、 小括号、关键词和函数规则

a) 不要把小括号和关键词紧贴在一起,要用空格隔开它们

b) 小括号和函数名要紧贴在一起

c) 除非必要,不要在Return返回语句中使用小括号

例如:

if (condition) {

}

strcmp($sHello, $sEvening);

return 1;

十二、 If Then Else格式

布局

if (条件1) { //注释

}

else if (条件2) { //注释

}

else { //注释

}

如果你有用到else if语句的话,通常最好有一个else块以用于处理未处理到的其他情况。可以的话放一个记录信息注释在else处,即使在else没有任何的动作。

条件格式

总是将恒量放在等号/不等号的左边,例如:

if ( 6 == $errorNum ) …

一个原因是假如你在等式中漏了一个等号,语法检查器会为你报错。第二个原因是你能立刻找到数值,而不是在你的表达式的末端找到它。需要一点时间来习惯这个格式,但是它确实很有用。

十三、 Switch格式

a) default总应该存在,它应该不被到达,然而如果到达了就会触发一个错误。

b) 如果你要创立一个变量,那就把所有的代码放在块中。

例如:

switch ($numPeople) {
case 1:
break;

case 2:
break;

default:
break;
}

十四、 ?:三元运算符

a) 把条件放在括号内以使它和其他的代码相分离。

b) 如果可能的话,动作可以用简单的函数。

c) 把所做的动作,“?”,“:”放在不同的行,除非他们可以清楚的放在同一行。

例如

(condition) ? funct1() : func2();

(condition)

? long statement

: another long statement;

十五、 代码块的声明

a) 声明代码块需要对齐。

例如

$iDate = 0;

$irDate = NULL;

$sName = ‘’;

$mName = NULL;

十六、 不要采用缺省方法测试非零值

不要采用缺省值测试非零值,也就是使用:

if (FAIL != f())

比下面的方法好:

if (f())

即使FAIL可以含有0值,也就是PHP认为false的表示。在某人决定用-1代替0作为失败返回值的时候,一个显式的测试就可以帮助你了。就算是比较值不会变化也应该使用显式的比较;

例如:if (!($bufsize % strlen($str)))应该写成:if (($bufsize % strlen($str)) == 0)以表示测试的数值(不是布尔)型。一个经常出问题的地方就是使用strcmp来测试一个字符等式,结果永远也不会等于缺省值。

非零测试采用基于缺省值的做法,那么其他函数或表达式就会受到以下的限制:

只能返回0表示失败,不能为/有其他的值。

命名以便让一个真(true)的返回值是绝对显然的,调用函数IsValid()而不是Checkvalid()。

十七、PHP注释与方法解析

a) //单行注释

b) 第二种
/*
* 多行注释…
*
*/
c) 第三种
/**
* 多行文档注释…
*
*/

d) 关于文档注释的说明

/**
* 这是一个关于函数的注释 …
*
*/
function bac(){}

/*
* 这不是一个文档注释,因为不是以/**开头 …
*
*/
function bac(){}

/**
* 这是一个文档注释,但与函数无关,因为他没放到函数前面 …
*
*/

function bac(){}

e) 文档说明
/**
* 文件说明
* @author 作者
* @license License
* @version 1.0
* @link
* @final
*/

推荐写完代码后用ZendStudio重新格式化一次代码,清晰



Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Recommendations
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template