武汉PHP培训
达内武汉民大中心

15827352908

热门课程

史上最全PHP开发规范

  • 时间:2018-02-28 16:06
  • 发布:武汉PHP培训
  • 来源:互联网

    一、规范前言篇
    标准化不是特殊的个人风格,它让程序员可以了解任何代码,弄清程序的状况;新人可以很快的适应环境;防止新接触PHP的人一次次的犯同样的错误;在一致的开发环境下,可以减少人们犯错的机会.本规范的标准在绝对多数应用上为仿照Java技术体系,因为Java技术体系以其众多成功的案例成为大部分计算机应用层的工业标准,此外便于日后公司向Java技术体系转型.
    二、命名定义篇
    局部变量命名
    使用英文名词、动词,以大写字母作为单词的分隔,其他的字母均使用小写,单词的首个字母使用小写,不使用下划线,例:
    $repeatCount = '';
    $delUserSql  = '';
    全局常量命名
    使用英文名词、动词,所有字母都使用大写,以下划线分隔每个单词,例:
    define( 'WEBSITE_NAME', '名称' );
    define( 'WEBSITE_URL',  '地址' )
    数组变量命名
    使用英文名词、动词,以大写字母作为单词的分隔,其他的字母均使用小写,单词的首个字母使用小写,不使用下划线,以字符串Array为后缀,例:
    $scopeArray  = array();
    $bookIdArray = array();
    静态变量命名
    使用英文名词、动词,以大写字母作为单词的分隔,其他的字母均使用小写,单词的首个字母使用小写,不使用下划线,以字符串Static为后缀,例:
    function getDirectoryFile()
    {
    static $fileArrayStatic = '';
    static
    $fileNumStatic   = '';
    ...
    }
    对象变量命名
    使用类名称为变量前缀,所有字母都使用大写,以字符串_OBJECT为后缀,例:
    $USERACCOUNT_OBJECT   = new UserAccount();
    $PAINTINGORDER_OBJECT = new
    PaintingOrder();
    类命名
    使用英文名词,以大写字母作为词的分隔,其他的字母均使用小写,名词的首个字母使用大写,不使用下划线,例:
    class UserAccount
    {
    ...
    }
    class PaintingOrder
    {
    ...
    }
    方法命名
    使用英文名词、动词,以大写字母作为词的分隔,其他的字母均使用小写,单词的首个字母使用小写,不使用下划线,例:
    class UserAccount
    {
    function isAccountOk()
    {
    ...
    }
    function addAccount()
    {
    ...
    }
    }
    方法中参数命名
    使用英文名词、动词,以大写字母作为词的分隔,其他的字母均使用小写,单词的首个字母使用小写,不使用下划线,例:
    class UserAccount
    {
    function isAccountOk( $accountName )
    {
    $this->accountName = $accountName;
    ...
    }
    function addAccount( $inputDataArray )
    {
    $this->inputArray =
    $inputDataArray;
    ...
    }
    var $accuntName = '';
    var $inputArray = '';
    }
    类属性命名
    使用英文名词、动词,以大写字母作为词的分隔,其他的字母均使用小写,单词的首个字母
    使用大写,不使用下划线,对于类属性为某个对象变量,则以字符串Object为后缀,例:
    class UserAccount
    {
    function IsAccountOk()
    {
    ...
    }
    function AddAccount()
    {
    ...
    }
    var $tableName      = '';
    var $databaseObject = '';
    }
    三、语法书写篇
    大括号{}规则
    将大括号放置在关键词下方的同列处,例:
    if ( $condition )
    {
    ...
    }
    不使用此种方式:
    if ( $condition ) {
    ...
    }
    代码缩进规则
    使用制表符缩进(TAB键)或四个空格.如果缩进层数大于四的时候,请重新设计该项业务逻辑的算法.
    小括号()规则
    不要把小括号和关键词、方法名、方法参数紧贴在一起,要用一个空格分隔,例:
    if ( $condition )
    {
    ...
    }
    function addAccount( $inputDataArray )
    {
    ...
    }
    由于小括号与关键词等紧贴容易被看成是一体,因此不要使用以下方式,例:
    if ($condition) {
    ...
    }
    function addAccount($inputDataArray)
    {
    ...
    }
    if .. else ... 规则
    通常最好有一个else块以用于处理未处理到的或未知的其他情况,即使条件处理语句只有一个也必须使用大括号{},例:
    if ( $condition1 )
    {
    ...
    }
    else if ( $condition2
    )
    {
    ...
    ...
    }
    else
    {
    ...
    }
    尽可能避免以下使用方式,例:
    if ( $condition1 )
    ...
    else
    ...
    switch规则
    每个case块结束处必须加上break,而default总应该存在处理未知情况,例:
    switch( $condition )
    {
    case $value1:
    ...
    break;
    case
    $value2:
    ...
    break;
    default:
    ...
    break;
    }

    声明定位规则

武汉PHP培训

    声明代码块需要对齐,且初次使用变量时需要初始化,例:
    var $tableName      = '';
    var $databaseObject = '';
    不使用以下方式,例:
    var $tableName;
    var $accuntName = '';
    var $databaseObject = '';
    四、其它说明篇
    所有类方法必须有返回值,除结果简单外返回true或者false之外,其它方法应返回不同的值
    以交作流程进一步处理.
    html的form表单统一不设置submit按钮的名称属性(name).
    html的form表单各个元素名称与数据库字段保持一致.
    每行一个语句.
    不要采用缺省方法测试非零值,必须显式测试,例:
    if ( false != $this->IsAccountOk()
    )
    {
    ...
    }
    else
    {
    ...
    }
    不要使用以下方式,例:
    if ( $this->IsAccountOk()
    )
    {
    ...
    }
    else
    {
    ...
    }
    不要使用三元逻辑符 ? :,但对变量的赋值除外,例:
    $_GET['act']   = !empty( $_GET['act'] ) ? $_GET['act'] : 'v_login';
    统一使用<?PHP ?>,禁止使用<? ?>格式.
    对于get、post、session类型变量,必须使用$_GET、$_POST、$_SESSION方式定义和调用.
    尽可能使用单引号''而不是双引号''.
    使用完毕后的数组变量、对象变量、查询集合必须马上使用unset()、free_result()释放资源.
    一个PHP文件只能包含一个类定义编码,以类名称作为文件名称.
    PHP文件中绝不能出现html语句,html文件中尽可能避免出现PHP语句.
    html文件必须通过w3c的html4检测认证(http://validator.w3.org/
    ).
    如果发觉您在程序中的命名只有少量能和其对应事物相匹配的话,请重新设计系统.
    在为类命名前首先要知道它是什么.如果通过类名提供的线索,您还是想不起这个类是什么的话,
    那么您的设计是做得不够好.
    超过三个单词组成的混合名是容易造成系统各个实体间的混淆,请重新设计类.
    通常每个方法只执行一项逻辑动作事务,所以对它们的命名应该清楚的说明它们是做什么的:用checkForErrors()代替errorCheck(),用dumpDataToFile()代替dataFile().
    这么做使功能和数据成为更可区分的物体.
    五、程序注释篇
    类的注释
    /*
    * Purpose:
    * 作为通用接口访问数据库的类
    * Class Name:
    * Database
    *
    Author:
    * unixdotnetphpboke@163.com
    * Modifications:
    *
    2004-08-18 09:15
    * 添加db_insert_id()方法
    * unixdotnetphpboke@163.com
    * See: 参照说明
    */
    class Database
    {
    ……
    }
    类方法的注释
    /*
    * Purpose:
    * 取得上一步数据库insert操作产生的id
    * Method Name:
    *
    getInsertId()
    * Parameter:
    * Return:
    * int
    * Author:
    * unixdotnet
    phpboke@163.com
    * Modifications:
    * 2004-08-18 09:15
    * 修改原因
    * unixdotnet phpboke@163.com
    * See: 参照说明
    */
    function getInsertId()
    {
    ...
    }
    类属性的注释
    class Database
    {
    /*
    * Purpose:
    * 连接数据库所需的用户名
    *
    Attribute Name:
    * $databaseUserName
    * Type: string
    * Author:
    *
    unixdotnet phpboke@163.com
    *
    Modifications:
    * 2004-08-18 09:15
    * 修改原因
    * unixdotnet phpboke@163.com
    * See: 参照说明
    */
    var $databaseUserName;
    ...
    }
    六、数据库应用篇
    数据库的设计必须符合三个范式(极端要求常用高速时考虑单独设置记录表除外).
    数据库名称应该由概述项目内容的小写英文名词组成,以下划线分隔单词,
    避免跨平台时可能出现的大小写错误.
    数据表名称应该由物件对象名称的小写英文名词组成(尽可能对应系统中的业务类名称),
    以下划线分隔单词,避免跨平台时可能出现的大小写错误.
    数据表的字段应避免使用varchar、text等不定长的类型,时间信息的字段使用unix tiemstamp类型存储.
    查询数据时禁止使用*通配符避免占用资源加速处理速度,尽量避免使用临时表.
    查询数据连接多表时各资源应该使用全名称,即tableName.fieldName,而不是fieldName.
    SQL语句应尽可能符合ansi92标准,避免使用特定数据库对SQL语言的扩充特性.
    开发结束后,必须针对SQL查询语句的条件语句部分(where)添加索引,
    须匹配多个条件的应该使用聚合索引.
    索引的组成应由左至右匹配条件语句的顺序.
    严禁盲目添加索引,避免减慢数据插入的速度、增大占用空间及减慢查询速度.
    每当数据库(表)发生结构性变化时须登记保存;日常须定时(不超过三个工作日)
    备份数据库结构及其数据.
    1.
    给php变量赋值为字符串,尽量用单引号.单引号速度要快很多.
    2.
    给php变量赋值时,值中带变量,就的用双引号了,双引号能自动解析变量,方便很多.
    如$b=blue; $a="php$b"; echo $a;
    输出phpblue (单双引号各有千秋啊)

    3. html内尽量用双引号,无论多长拿到php中首尾加单引号就行,甭怕错.

更多武汉PHP培训相关咨询,请扫描下方二维码

武汉PHP培训

上一篇:如何用PHP开发Android应用程序
下一篇:为什么要学习PHP开发?

PHP 优化写法之字符串

CodeIgniter的优缺点

PHP高性能框架之一Yii

选择城市和中心
贵州省

广西省

海南省

有位老师想和您聊一聊