PHP编码规范

文件

  • 以"\n"为换行符
  • PHP的open tag统一为“<?php”,close tag统一为“?>”,文件中最後一个?>之後如果没有内容,不能有换行或者空格。
  • 行长度不宜超过100字节

缩进

  • 四个空格键作为每一次缩进所用的字符。
  • 对于switch语句,case及break之间的语句不需要缩进。

关键字、常量以及变量

  • 关键字与其後的左括号之间应有一个空格,以区分于函数调用。
  • 关键字:true、false、null必须使用小写
  • 不允许使用:and、or等关键字,要使用相应的运算符:&&、||等。
  • 常量命名需满足:[A-Z0-9\_]+。即大写字母、数字及下划线。
  • 预定义变量一律使用短格式,即:$_POST、$_GET、$_SERVER、$_ENV、$GLOBALS、$_COOKIE、$_SESSION、$_REQUEST、$_FILES等,不再使用长格式:$_HTTP_POST_VARS、$_HTTP_GET_VARS。

函数、类

  • 类名和接口名必须以大写字母开头,以下划线“_”为分割符
  • 生成一个对象时,必须使用new Classname()的方式,不能用new Classname的方式。
  • 函数参数列表必须在逗号後加空格
  • 有默认值的参数必须在函数列表的末尾出现
  • 函数调用时,函数名和open parenthesis之间不能有空格。

注释

  • 文件、函数、类以及成员变量都必须包含注释。
  • 文件、函数、类注释必须包含:简单说明、详细说明、@author。
  • 变量和函数参数列表注释必须包含详细的变量类型和说明文字。
  • 注释只支持“//”标识的单行注释和“/*……*/”标识的多行注释,不支持“#”标识的单行注释。

控制语句、代码块

  • open brace在行尾,无须在本行语句另起一行。close brace占独立的一行,elseif语句中除外。
  • elseif语句使用elseif形式,不使用else if形式。
  • 控制语句中即使只有一行语句,也不能省略括号。

示例代码

<?php
/**
* 这是一个简要文件注释范例
* 
*/


/**
* 这是一个简要类注释范例
*
*/
class Class{
        /**
        * 这是一个公有成员变量
        *
        * @var integer
        */
        public      $intRows;
        
        /**
        * 这是一个保护成员变量
        *
        * @var string
        */
        protected   $_strDbName;
        
        /**
        * 这是一个私有成员变量
        *
        * @var double
        */
        private     $_dblTime;
        
        /**
        * 这是一个类常量
        */
        const       CONST_VAR = 1;
        /**
        * 这是一个简要函数注释
        *
        * 这是一个详细函数注释,这是一个详细函数注释
        * 这是一个详细函数注释,这是一个详细函数注释
        *
        * @param integer $intParam 参数一
        * @param string $strParam 参数二
        * @return string 返回值
        */
        public function getDbName($intParam, $strParam){
                //这是一个合法的单行注释
                
                //连续多行赋值语句之间需要对齐。
                $intA     = 1;
                $intAB    = 2;
                $intABC   = 3;
                $intABCD  = 4;
                $intABCDE = 5;
                
                if ($intA == 1 && $intAB == 2) {
                        //关键字与左括号之间需要有空格,起始大括号与前一个字符之间需要有空格
                        //即使块中没有语句也不能省略括号
                } elseif ($intABC == 3 && $intABCD == 4) {
                        
                } else {
                        
                }
                
                switch ($intA){
                        case 1:
                        $intA = $intAB;
                        break;
                        case 2:
                        $intA = $intABC;
                        break;
                        default:
                        $intA = $intABCD;
                        break;
                }
                
                //null、true、false等必须小写
                if ($intAB == null || $intAB == true || $intAB == false) {
                        
                }
                
                //预定义变量一律使用短格式
                $arrPost = $_POST;
                $arrGet  = $_GET;
                
                return $intA;
        }
        /**
        * 保护成员函数
        *
        * 保护成员函数,返回值有两种类型
        *
        * @return array|string
        */
        protected function _getDb(){
                if ($this->getDbName() == 1) {
                        return array();
                } else {
                        return 'abc';
                }
        }
}


//常量命名需满足:[A-Z0-9\_]+。即大写字母、数字及下划线。

define("SAMPLE_CONSTANT", 1);

$objDb = new Mysql();
?>

反馈建议

受益良多……

-- ZhangYufeng - 2009-09-22

 
Topic revision: r2 - 2009-09-22 - 06:56:39 - ZhangYufeng
 

TWIKI.NET
This site is powered by the TWiki collaboration platformCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Supported by Onemouse/风雪之隅 京ICP备09034578号
Ideas, requests, problems regarding PHP Kernel Analytics? Send feedback