欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  php教程

[PHP]CodeIgniter学习手册(四):简单的PHP开发规范

程序员文章站 2024-01-29 21:31:28
...

文件式 文件应该使用 Unicode (UTF-8) 编码保存。同时不要使用 字节序标记(BOM) 。与 UTF-16 和 UTF-32 不同,UTF-8 编码的文件不需要指明字节序,而且 字节序标记(BOM) 在PHP中会产生预期之外的输出,阻止了应用程序设置它自己的头信息。应该使用Unix 式的

文件格式
文件应该使用 Unicode (UTF-8) 编码保存。同时不要使用 字节序标记(BOM) 。与 UTF-16 和 UTF-32 不同,UTF-8 编码的文件不需要指明字节序,而且 字节序标记(BOM) 在PHP中会产生预期之外的输出,阻止了应用程序设置它自己的头信息。应该使用Unix 格式的行结束符(LF)。



不当的:

echo "Here's my code!";
?>

适当的:

echo "Here's my code!";
/* End of file myfile.php */
/* Location: ./system/modules/mymodule/myfile.php */


类和方法(函数)的命名规则

类名的首字母应该大写。如果名称由多个词组成,词之间要用下划线分隔,不要使用骆驼命名法。类中所有其他方法的名称应该完全小写并且名称能明确指明这个函数的用途,最好用动词开头。尽量避免过长和冗余的名称

不当的:

class superclass

class SuperClass

适当的:

class Super_class


不当的和适当的方法名称的示例:

不当的:

function fileproperties() // 方法名没有清晰的描述以及下划线分割单词

function fileProperties() // 方法名没有清晰的描述以及使用了驼峰法命名

function getfileproperties() // 还可以!但是忘记了下划线分割单词

function getFileProperties() // 使用了驼峰法命名

function get_the_file_properties_from_the_file() // 方法名太冗长

适当的:

function get_file_properties() // 清晰的方法名描述,下划线分割单词,全部使用小写字母


变量命名
变量的命名规则与方法的命名规则十分相似。就是说,变量名应该只包含小写字母,用下划线分隔,并且能适当地指明变量的用途和内容。那些短的、无意义的变量名应该只作为迭代器用在for()循环里。

不当的:

$j = 'foo'; // 单字符变量应该只作为for()的循环变量使用

$Str // 使用了大写字母

$bufferedText // 使用了驼峰命名,而且变量名应该更短,并有清晰的语法含义

$groupid // 多个词组,应该使用下划线分割

$name_of_last_city_used // 太长了

适当的:

for ($j = 0; $j

$str $buffer $group_id $last_city


注释

通常,代码应该被详细地注释。这不仅仅有助于给缺乏经验的程序员描述代码的流程和意图,而且有助于给你提供丰富的内容以让你在几个月后再看自己的代码时仍能很好的理解。 注释没有强制规定的格式,但是我们建议以下的形式。

文档块(DocBlock) 式的注释要写在类和方法的声明前,这样它们就能被集成开发环境(IDE)捕获:
/**
* Super Class
* @package Package Name
* @subpackage Subpackage
* @category Category
* @author Author Name
* @link http://example.com
*/

使用行注释时,在大的注释块和代码间留一个空行。


常量
常量命名除了要全部用大写外,其他的规则都和变量相同。在适当的时候,始终使用CodeIgniter常量,例如LASH, LD, RD, PATH_CACHE等等.

不当的:

myConstant // 未使用下划线分割单词,未全部使用大写字母

N // 不能使用单个字母作为常量

S_C_VER // 常量名没有清晰的含义

$str = str_replace('{foo}', 'bar', $str); // should use LD and RD constants

恰当的:

MY_CONSTANT

NEWLINE SUPER_CLASS_VERSION

$str = str_replace(LD.'foo'.RD, 'bar', $str);



TRUE, FALSE, 和 NULL
TRUE, FALSE, 和 NULL 关键字应该总是完全大写的。

不当的:

if ($foo == true) $bar = false;

function foo($bar = null)

恰当的:

if ($foo == TRUE)

$bar = FALSE;

function foo($bar = NULL)



逻辑操作符
|| 有时让人底气不足,不容易辨识,因为在某些输出设备上它不够清晰(可能看起来像数字11). && 要优先于 AND ,不过两者都可以被接受, 使用 ! 时要在其前后都加一个空格。

不当的:

if ($foo || $bar)

if ($foo AND $bar) // 可以,但有时不被常用的语法程序高亮标识)

if (!$foo)

if (! is_array($foo))

恰当的:

if ($foo OR $bar)

if ($foo && $bar) // 推荐 if ( ! $foo) if ( ! is_array($foo))


比较返回值与类型映射
部分PHP函数执行失败时返回 FALSE, 但也可能有一个有效的返回值 "" 或 0, 它在松散比较中会被计算为FALSE. 在条件语句中使用这些返回值的时候,为了确保返回值是你所预期的类型而不是一个有着松散类型的值,请进行显式的比较。

在返回和检查你自己的变量时也要遵循这种严格的方法,必要时使用=== 和 !==。

不当的:

// 如果 'foo' 位于此字符串的起始处,strpos将返回 0,

// 此处条件判断的结果为TRUE

if (strpos($str, 'foo') == FALSE)

恰当的:

if (strpos($str, 'foo') === FALSE)

不当的:

function build_string($str = "") {

if ($str == "") // uh-oh! 如果传递的参数是FALSE或者整数0那会怎么样? { }

}

恰当的:

function build_string($str = "") {

if ($str === "") { }

}



文件中的空格(CodeIgniter中)
在PHP开始标记之前和结束标记之后都不能有空格。输出已经被缓存,所以文件中的空格会导致CodeIgniter在输出自己的内容之前就开始了输出,这会使CodeIgniter出错且无法输出正确的header。在下面的例子中,使用鼠标选中这些文本,你就能看到那些不应该有的空格。
不当的:
并且在PHP结束标记后面也有空格 ?>

恰当的: