我的PHP编码规范

PHP 2016-01-06

1.文件格式规范

php文件标记

统一以<?php开始,放弃<?短标签,对于只含php代码的文件舍弃?>结尾。

缩进应该能反映代码的逻辑结果

使用tab或者四个空格

多变量赋值保持相等间距和排列

$arr = array(
    'id'        => '0',     //表格索引
    'userid'    => '123',   //所属用户id编号
    'groupid'   => '0',     //所属群组id
    'menuid'    => '0'      //模块id
);

每行代码当度应控制

在80个字符以内,最长不要超过120字符,必要时要进行拆分处理。

统一编码

文件都以utf-8形式保存,每行行尾最好不要有多余空格。

提取与封装

同样的代码调用三次或三次以上应封装成函数或类,功能模块名名称避免滥用字典定义。

2.语法命名规范

变量名应体现含义,多单词使用驼峰法匈牙利命名法

$child_list_count = count($parent['child_list']);

$loginTimeLimit = 3600;

常量统一使用大写字母组成,多个单词下划线"_"隔开

define('APP_PATH', 'app');
define('APP_DEBUG', false);

const PI = 3.14159;
const COUNTRY = 'China';

类成员变量规则

  • 类名首字母大写
  • 对于私有private使用小写字母,以下划线"_"开头或结尾;
  • 类变量声明放在类顶部,先与任何函数的声明;
  • 函数与函数之间空一行

    class AttentionController {
    private $_userid;
    private $_noticeid;
    public $sname;
    
    public function getUserid() {
        return $this->_userid;
    }
    
    public function getNoticeid() {
        return $this->_noticeid;
    }
    }

函数命名规范

引用只允许定义在函数参数中,禁止函数调用时传引用。

function func(&$param) {
    //code...
}

$result = func($name);
//$result = func(&$name);    //不允许

使用空格

函数参数列表、逗号表达式、操作符和等号之间多一个空格

function fun($var1, $var2, $var3) {
    //code...
}

$name = isset($default)? 1 : 0;
$rect_cir = ($length + $height) * 2;

大括号"{"的处理

类,函数,复合语句大括号"{"保持在同一行,与名称之间多一个空格

function fun($a, $b) {
    //code...
}
for($i = 0; $i < 100; $i++) {
    //code...
}

if($return !== false) {
    //code...
}

不用模棱两可的复杂语句难,必要时加括号或拆分多行

$a = true ? 0 : true ? 1 : 2; // (true ? 0 : true) ? 1 : 2 = 2

$b = ++$i * (10 + $i++);//$i++;$b = $i * (10 + $i);

只有一行的if,while,for也需要加{}包裹

语句中要注意前后逻辑分离

如果上下文语义上差别比较大,空一行,方便看清逻辑带代码。

3.注释规范

注释以"/**"开头,首行注释无需关键词@,直接注释

类注释

类注释位于类声明前面,

/**
 * 类功能说明
 *
 * @abstract                ----抽象类
 * @final                   ----指明这是一个最终的类、方法、属性,禁止派生、修改
 * @date xxxx-xx-xx         ----类创建时间
 * @author Name [<email>]   ----指明作者信息
 */
class A {
    //code...
}

类成员变量注释

简单的注释用//一行注释

/**
 * 成员变量含义
 * @access private           ----访问权限注释
 * @author name [<email>]    ----指明作者信息
 */
 private $_curl = null;

 // 错误信息
 protected $error = '';

函数注释

  • @access ----访问权限注释
  • @author Name [<email>] ----指明作者信息
  • @param (object objecttype|type) [$varname] [description] 定义函数或者方法的参数信息
    • ojecttype 是对象的类名,type 指出这个参数的类型,参考类型:
    • string 该参数是一个字符型变量。
    • array 该参数是一个数组。
    • integer 该参数是一个数值型。integer(octal)数值型,并且是按照八进制方式存放。integer (hexadecimal) 数值型,且按照十六进制方式存放。    
    • boolean 该参数是一个布尔型。
    • mixed 该参数的类型是可变的,可以上面几种类型的组合。
    • $varname 是形参的名称
    • [description] 是对于参数的说明。
    • @return (object objecttype|type) 函数返回类型
    /**
     * 取得对象实例 支持调用类的静态方法
     * @access public
     * @param string $class 对象类名
     * @param string $method 类的静态方法名
     * @return object
     */
    public static function instance($class, $method = '') {
        //code....
    }

其他注释

单行注释使用 //
多行注释使用 /* */


本文由 hongweipeng 创作,采用 知识共享署名 3.0,可自由转载、引用,但需署名作者且注明文章出处。

如果对您有用,您的支持将鼓励我继续创作!