所以,今天就整理了一下PHP的规范,让大家参考参考。就像大家常说的一句话,“规矩是死的,人是活的。”。是的,但是,在规矩中成长的人都会拥有一堆非常让人羡
PHP规范
1. 为什么要编码规范
•编码规范(code conventions)对于程序员而言尤为重要,有以下几个原因:
1.在一个软件的生命周期中,80%的花费用于维护。
2.几乎没有任何一个软件在其整个生命周期中均由最初的开发人员来维护。
3.编码规范可以改善软件的可读性,可以让程序员尽快而彻底地理解新的代码。
4.如果将源码作为产品发布,就需要确认它是否被很好地打包并且清晰无误,和其他已构建的任何产品一样。
2. 概要
•用四个空格代替tab缩进。
•去掉PHP文件底部的“?>”。
•每行程序一般少于80字符,超出部分,分成多行书写。
•每行只写一条语句,不允许把多个短语句写在一行中。
•应为文件和函数添加注释。
•应及时删除废除的注释代码。
•变量、函数的命名应规范。
3. 编辑器设定
3.1. 缩进
所有的缩进使用空格取代Tab制表符。PHP文件采用4个空格的缩进,HTML文件以及HTML文件中嵌入的Javascript代码采用2个空格的缩进;单独的 Javascript以及CSS文件采用4个空格的缩进。
3.2. 字符编码
所有PHP、HTML文件均保存为No Bom UTF-8的字符编码。
4. 代码布局
4.1. 文件底部
去掉文件底部 “?>”。
4.2. 相对独立的程序块之间、变量说明之后必须加空行
示例:如下例子不符合规范
复制代码 代码如下:
if (!$valid_ni()){
... // program code
}
$repssn_ind = $ssn_data['index']->repssn_index;
$repssn_ni = $ssn_data['index']->ni;
应如下书写:
if (!valid_ni(){
... // program code
}
$repssn_ind = $ssn_data['index]->repssn_index;
$repssn_ni = $ssn_data[index]->ni;
4.3. 较长的语句要分成多行书写
一行程序需小于80字符
较长的语句要分成多行书写,长表达式要在低优先级操作符处划分新行,操作符放在新行之首,划分出的新行要进行适当的缩进,使排版整齐,语句可读。
循环、判断等语句中若有较长的表达式或语句,则要进行适应的划分,长表达式要在低优先级操作符处划分新行,操作符放在新行之首示例:
复制代码 代码如下:
$perm_count_msg->len = NO7_TO_STAT_PERM_COUNT_LEN
+ STAT_SIZE_PER_FRAM * strlen( $len );
$act_task_table[$frame_id * STAT_TASK_CHECK_NUMBER + $index]->occupied
= $stat_poi[index]->occupied;
$act_task_table[taskno]->duration_true_or_false
= sys_get_sccp_statistic_state( $stat_item );
if (($taskno && (n7stat_stat_item_valid ($stat_item))){
... // program code
}
for ($i = 0, $j = 0; ($i word_length)
&& ($j word_length); $i++, $j++){
... // program code
}
4.4. 一行只写一条语句
不允许把多个短语句写在一行中,即一行只写一条语句。示例:如下例子不符合规范
$rect->length = 0; $rect->width = 0;
应如下书写:
$rect->length = 0;$rect->width = 0;4.5. 始终包含大括号
这是因为懒于多敲两个字符而给代码清晰带来问题的又一个情形。
示例:如下例子不符合规范
复制代码 代码如下:
if ($condition) do_stuff();
if ($condition)
do_stuff();
while ($condition)
do_stuff();
for ($i = 0; $i do_stuff($i);
应如下书写
复制代码 代码如下:
if (condition){
do_stuff();
}
while ($condition){
do_stuff();
}
for ($i = 0; $i do_stuff();
}
4.6. switch写法
示例:如下例子符合规范
复制代码 代码如下:
switch (){
case ‘1':
..program
break;
case ‘2':
..program
break;
}
4.7. 大括号放在哪儿
程序块的分界符(大括号‘{'和‘}')应各独占一行并且位于同一列,同时与引用它们的语句左对齐。
而在函数体的开始、类的定义、以及if、for、do、while、switch、case语句中的右大括号应放在行尾, 左大括号应与右大括号所在行的行首处在同一列
示例:如下例子不符合规范
复制代码 代码如下:
for (...)
{
... // program code
}
if (...)
{
... // program code
}
function example_fun()
{
... // program code
}
应如下书写:for (...){
... // program code
}
if (...){
... // program code
}
function example_fun(){
... // program code
}
4.8. 符号之间使用空格
采用这种松散方式编写代码的目的是使代码更加清晰。
由于留空格所产生的清晰性是相对的,美国空间,所以,在已经非常清晰的语句中没有必要再留空格,如果语句已足够清晰则括号内侧(即左括号后面和右括号前面)不需要加空格,服务器空间,多重括号间不必加空格。在长语句中,如果需要加的空格非常多,那么应该保持整体清晰,而在局部不加空格。给操作符留空格时不要连续留两个以上空格。
示例:如下例子不符合规范
复制代码 代码如下:
$i=0;
if($iif ( ($i 8) ) ...
for($i=0; $i$i=($j do_stuff( $i, "foo", $b );
应如下书写:
复制代码 代码如下:

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

SecLists
SecLists is the ultimate security tester's companion. It is a collection of various types of lists that are frequently used during security assessments, all in one place. SecLists helps make security testing more efficient and productive by conveniently providing all the lists a security tester might need. List types include usernames, passwords, URLs, fuzzing payloads, sensitive data patterns, web shells, and more. The tester can simply pull this repository onto a new test machine and he will have access to every type of list he needs.

MinGW - Minimalist GNU for Windows
This project is in the process of being migrated to osdn.net/projects/mingw, you can continue to follow us there. MinGW: A native Windows port of the GNU Compiler Collection (GCC), freely distributable import libraries and header files for building native Windows applications; includes extensions to the MSVC runtime to support C99 functionality. All MinGW software can run on 64-bit Windows platforms.

SublimeText3 Mac version
God-level code editing software (SublimeText3)

SAP NetWeaver Server Adapter for Eclipse
Integrate Eclipse with SAP NetWeaver application server.

Zend Studio 13.0.1
Powerful PHP integrated development environment
