PHP代码文件必须以不带BOM的UTF-8编码。
PHP代码中应该只定义类、函数、常亮等声明,或其他会产生副作用的操作(如:生成文件输出以及以及修改PHP的配置文件),二者只能选其一。 <?php
//副作用的反面示例
init_set("error_reporting", E_ALL);
include "somefileA.php";
require "somefileB.php";
function starcard()
{
echo "51starcard\n";
} <?php
//副作用的正面示例
if (!function_exists("starcard")){
function starcard()
{
echo "51starcard\n";
}
}
if (!function_exists("jht")){
function jht()
{
echo "jht\n";
}
}
类的命名必须遵循大写开头的驼峰命名规范。
类中的常量所有字母都必须大写,单词用下划线分隔。
方法名称必须遵循小写开头的驼峰命名规范。 <?php
class ClassExampleA
{
const CONST_EXAMPLE = "const_example";
public exampleMethod()
{
echo "example method\n";
}
}
代码必须使用4个空格符,而不是TAB键进行缩进。
每行代码不该超过80个字符,大于80个字符的应该折成多行,非空行后一定不能有多余的空格,每行一定不能有多条语句。
PHP所有的关键字必须全部小写,常量true、false和null也必须小写。 <?php
//true, false, null, abstract, private, public...
return false;
每个namespace名称空间声明语句和use语句块后面,必须插入一个空白行。
所有的use必须在namespace后声明,每条use声明语句必须只有1个use关键字。 <?php
namespace Istar\Example;
use Istar\DemoA;
use Istar\DemoB;
class DemoC
{
}
类的开始花括号必须独占一行,结束花括号也必须在类主体后独占一行。
关键字extends和implements必须写在类名称的同一行,若implements列表分成多行,则每个接口名必须独立成行。 <?php
namespace Istar\Package;
use FooClass;
use BarClass as Bar;
class ClassA extends ParentClass implements \ArrayAccess, \Countable
{
}
class ClassB extends ParentClass implements
\ArrayClass,
\Countable
{
}
方法的开始花括号必须写在方法声明后自成一行,结束花括号也必须写在方法主体后自成一行。
类的属性和方法必须添加访问修饰符,abstract和final必须声明在访问修饰符之前,而static必须声明在访问修饰符之后。
方法名,属性名不可通过下划线来区分private或public。
方法的参数列表中,每个逗号后面必须要有一个空格,而逗号前面则一定不可有空格,有默认值的参数,必须放在参数列表的末尾。 <?php
class ClassA
{
public function methodA($arg1, $arg2, $arg3 = [])
{
}
final public static function methodB()
{
}
}
控制结构的关键词后必须有一个空格,左括号后和右括号前一定不可有空格,右括号与开始花括号间必须有一个空格,结束花括号必须在结构体主体后单独成行。 <?php
if ($exp1) {
//if body
} elseif {
//elseif body
} else {
//else body
} <?php
switch ($expr) {
case 0:
echo "case 0";
break;
case 1:
echo "case 1";
// no return
case 2:
case 3:
case 4:
break;
default:
echo "default";
break;
} <?php
while ($expr) {
// while body
}
do {
// while body
} while ($expr); <?php
for ($i=0; $i < 10; $++) {
echo "{$i}\n";
}
foreach ($iterable as $key => $value) {
echo $key . $value . "\n";
} <?php
try {
// body
} catch (\Exception $e) {
echo $e->getMessage();
}
闭包声明时,关键字function和use的前后都必须要有一个空格,开始花括号必须写在声明的同一行,结束花括号必须紧跟主体结束的下一行。
闭包中的参数列表规则,同等于一般函数的参数列表规则。 <?php
$closureA = function ($arg1, $arg2) {
};
$closureB = function ($arg1, $arg2) use ($var1, $var2) {
}
$closureC = function (
$longArgu1,
$longArgu2
) {
};
$closureD = function (
$longArgu1,
$longArgu2
) use (
$longVar1,
$longVar2
){
};