日期:2013-03-29 浏览次数:20378 次
缩进
缩进使用4个空格,而不是 tab。如果你使用 Emacs 编辑 PEAR 代码,你应该设置 indent-tabs-mode 为 nil。下面是一个 mode hook 的示例,用于设置 Emacs 符合缩进标准(你必须确保在编辑 PHP 文件时,这些设置发生作用):
(defun php-mode-hook ()
(setq tab-width 4
c-basic-offset 4
c-hanging-comment-ender-p nil
indent-tabs-mode
(not
(and (string-match "/\\(PEAR\\|pear\\)/" (buffer-file-name))
(string-match "\.php$" (buffer-file-name))))))
这里是同等效果的 vim 规则:
set expandtab
set shiftwidth=4
set softtabstop=4
set tabstop=4
--------------------------------------------------------------------------------
控制结构
控制结构包含 if、for、while、switch 等。这里有一个 if 语句的示例和一个 switch 语句的示例:
if 语句的示例:
<?php
if ((condition1) || (condition2)) {
action1;
} elseif ((condition3) && (condition4)) {
action2;
} else {
defaultaction;
}
?>
switch 语句的示例:
<?php
switch (condition) {
case 1:
action1;
break;
case 2:
action2;
break;
default:
defaultaction;
break;
}
?>
控制语句应该在控制关键词和开始的圆括号之间应该有一个空格,以此和函数调用进行区别。
强烈建议你总是使用花括号将控制结构各部分标识出来。即使是在技术上可以不使用花括号的地方。这可以增加代码的可读性,同时避免在结构部分增加新行后引入逻辑上的错误。
原始代码:
if (condition)
return true;
else
return false;
修改后的代码:
if (condition)
do something; // 出现逻辑错误
return true;
else
return false;
正确的做法:
if (condition) {
do something;
return true;
} else {
return false;
}
--------------------------------------------------------------------------------
函数调用
调用函数时,函数名和开始的括号之间不应该有空白字符。参数和开始及结束的括号之间不应有空格。而除第一个参数外,其他参数都应该用一个空格分隔。这里有一个示例:
<?php
$var = foo($bar, $baz, $quux);
?>
像上面的示例代码,赋值运算等号两边都应该使用一个空格。如果是相关的赋值运算,应该采用下面的形式以提供更好的可读性:
<?php
$short = foo($bar);
$long_variable = foo($baz);
?>
--------------------------------------------------------------------------------
函数定义
按照“one true brace”约定声明函数:
<?php
function fooFunction($arg1, $arg2 = '')
{
if (condition) {
statement;
}
return $val;
}
?>
“one true brace”约定就是开始的花括号单独占一行,而不是跟在其他语句后面。
具有默认值的参数应该位于参数列表的后面(事实上 PHP 语言定义也要求如此)。如果适合,函数应该总是返回一个有意义的值。这里有一个稍微长一点的示例:
<?php
function connect(&$dsn, $persistent = false)
{
if (is_array($dsn)) {
$dsninfo = &$dsn;
} else {
$dsninfo = DB::parseDSN($dsn);
}
if (!$dsninfo || !$dsninfo['phptype']) {
return $this->raiseError();
}
return true;
}
?>
--------------------------------------------------------------------------------
注释
类型(class)的联机文档应该符合 PHPDoc(类似于 JavaDoc)的约定。更多关于 PHPDoc 的信息可以访问 http://www.phpdoc.de/ 获得。
此外,强烈鼓励使用非文档注释。一般性规则是对于那些容易忘记作用的代码添加简短的介绍性注释。
推荐使用 C 样式的注释(/* */)和标准 C++ 注释(//),而不应该使用 Perl/shell 样式的注释(#)。
--------------------------------