ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
[TOC] # 1、缩进 使用4个空格作为缩进,而不使用tab缩进。 4个空格常被作为缩进排版的一个单位。缩进的确切解释并未详细指定(空格 vs. 制表符)。 一个制表符等于8个空格(而非4个),所以在某些编辑器中,需要特别指定一下制表符的长度为4(UltraEdit),而在某些编辑器中,会将制表符转换为空格。 # 2、大括号{}书写规则 `{` 直接跟在控制语句之后,不换行,如: ~~~ for ( $i=0;$i<$count;$i++ ) { echo 'test'; } ~~~ # 3、小括号()和函数、关键词等 小括号、关键词和函数遵循以下规则:     a.不要把小括号和关键词紧贴在一起,要用一个空格间隔;如`if ( $a<$b ); `     b.小括号和函数名间没有空格;如`$test = date("ymdhis");`     c.除非必要,不要在``return``返回语句中使用小括号。 如`return $a;`。 # 4、=符号书写 在程序中=符号的书写遵循以下规则:     a.在=符号的两侧,均需留出一个空格;如 `$a = $b` 、`$a = 'test'`等;     b.在=符号与!、=、<、>等符号相邻时,不需留一个空格;如 `if ( $a == $b )` 、`if ( $a != $b )` 等;     c.在一个申明块,或者实现同样功能的一个块中,要求=号尽量上下对其,左边可以为了保持对齐使用多个空格,而右边要求空一个空格;如下例: ~~~ $testa = $aaa; $testaa = $bbb; $testaaa = $ccc; ~~~ # 5、if else swith for while等书写 对于控制结构的书写遵循以下规则:     a.在if条件判断中,如果用到常量判断条件,将常量放在等号或不等号的左边,例如:`if ( 6 == $errorNum )` ,因为如果你在等式中漏了一个等号,语法检查器会为你报错,可以很快找到错误位置,这样的写法要注意;     b.`switch`结构中必须要有`default`块;     c.在 `for` 和 `wiile` 的循环使用中,要警惕 `continue`、 `break` 的使用,避免产生类似 `goto` 的问题。 # 6、语句断行 在代码书写中,遵循以下原则:     a.尽量保证程序语句一行就是一句,而不要让一行语句太长产生折行;     b.尽量不要使一行的代码太长,一般控制在120个字符以内;     c.如果一行代码太长,请使用类似 .= 的方式断行书写;     d.对于执行数据库的sql语句操作,尽量不要在函数内写sql语句,而先用变量定义sql语句,然后在执行操作的函数中调用定义的变量。 例子: ~~~ $sql = 'SELECT username,password,address,age,postcode FROM test_t '; $sql .= ' WHERE username=\'aaa\''; $res = mysql_query($sql); ~~~ ##7、数字 一个在源代码中使用了的赤裸裸的数字是不可思议的数字,因为包括作者,在三个月内,没人知道它的含义。例如: ~~~ if ( 22 == $foo ) { start_thermo_nuclear_war(); } elseif ( 19 == $foo){ refund_lotso_money(); } else { cry_cause_in_lost(); } ~~~ 你应该用`define()`来给你想表示某样东西的数值一个真正的名字,而不是采用赤裸裸的数字,例如: ~~~ define('PRESIDENT_WENT_CRAZY', '22'); define('WE_GOOFED', '19'); define('THEY_DIDNT_PAY', '16'); if ( PRESIDENT_WENT_CRAZY == $foo ) { start_thermo_nuclear_war(); } elseif ( WE_GOOFED == $foo){ refund_lotso_money(); } elseif ( THEY_DIDNT_PAY == $foo ){ infinite_loop(); } else { cry_cause_in_lost(); } ~~~ # 8、判断 遵循以下规则:     a.不能使用 1/0 代替` true/false`,在 PHP 中,这是不相等的;     b.不要使用非零的表达式、变量或者方法直接进行 `true/false` 判断,而必须使用严格的完整 `true/false` 判断; 如:不使用 `if ( $a )` 或者 `if ( checka() )` 而使用 ``if ( FALSE != $a )`` 或者 `if ( FALSE != check() )`。 ##9、避免嵌入赋值 在程序中避免下面例子中的嵌入式赋值: 不使用这样的方式: ```php while ( $a != ( $c = getchar() ) ) { process the character } ``` # 10、习惯与约定     通常变量的命名应该是有意义的单词,但在循环体中临时变量采用“IN规则”。     IN规则原本来自FORTRAN,在FORTRAN中,以字母表中I~N范围内字母开头的变量默认为整型变量。循环体中一般是整型变量,故习惯用I~N字母作为循环体中的变量命名。同时,I是标识符(Identify)首字母。如下: ```php function bubble_sort($array){     $count = count($array);     for($i=0;$i<$count; $s++){      for($j=$count-1;$j<$i;$j--){      if($array[$j]<$array[$j-1]){      $tmp = $array[$j];      $array[$j] = $array[$j-1];      $array[$j-1] = $tmp;      }      }     }     return $array; } ```