• php编码规范


    PHP 文件格式

    1、对于只包含有 PHP 代码的文件,结束标志("?>")是不允许存在的,PHP自身不需要("?>"), 这样做, 可以防止它的末尾的被意外地注入空白字符。

    2、缩进四个空格(4位),可调整IDE的tab设置为四个空格。

    3、行结束标志遵循 Unix 文本文件的约定,行必需以单个换行符(LF)结束。不要使用 苹果操作系统的回车(CR)或 Windows 电脑的回车换行组合如(CR,LF)。

    4、文件编码 请调整您的编辑器文件编码为UTF-8,并关闭UTF-8 BOM的功能。请不要使用windows自带的记事本编辑项目文件。

    第一章 命名约定

    命名应遵循下列原则:

    尽量使用完整单词或词组,或意义明确的简称

    1.1 类命名

    类名采用小写字母,目录按下划线分割。

    文件名全小写,不许中文,不能数字开头。

    1.2 函数和方法

    函数名与方法名是以小写字母,下划线区分。(函数名是指框架中加载的公共函数,方法是指类中的方法) 在对象中的方法,声明为 "private" 或 "protected" 的, 名称的首字符必须是一个单个的下划线,这是唯一的下划线在方法名字中的地方。声明为 "public" 的从不包含下划线。 对于面向对象编程,实例或静态变量的访问器总是以 "get" 或 "set" 为前缀。在设计模式实现方面,如单态模式(singleton)或工厂模式(factory), 方法的名字应当包含模式的名字,这样名字更能描述整个行为。注:单态模式一般为 Class::getInstance();工厂模式一般为Widget::factory();

    1.3 变量

    全小写变量可以使用 "_" 分割。如:楼盘信息 $house_info 声明为 "private"或 "protected" 的 的实例变量名必须以一个单个下划线开头。 避免在Smarty模板中使用$_GET等全局变量(global)禁止:{$smarty.get.page},需要php过滤以后才可以输出到模板。 特殊字符输出转义,入库不转。

    1.4 常量

    常量名的所有字母必须大写,下划线分割。

    第二章 编码风格

    2.1 PHP 代码划分

    PHP 代码总是用完整的标准的 PHP 标签定界,不允许使用短标签<? ?>,只包含 PHP 代码的文件,不要结束标签

    <?php

     

     

    2.2 字符串

    2.2.1 字符串文字

    当字符串是文字(不包含变量),应当用单引号来括起来。

    $string = 'Example String';

    2.2.2 包含单引号(')的字符串文字

    当文字字符串包含单引号就用双引号括起来,特别在 SQL 语句中使用。

    $sql = "select  `id`, `name` from `people` where `name`='Fred' or  `name`='Susan'";

    2.2.3 变量替换

    双引号中的变量用{}括起来。

    $greeting = "Hello {$name}, welcome back!";

    2.2.4 字符串连接

    字符串必需用 "." 操作符连接,在它的前后加上空格以提高可读性,当用 "." 操作符连接字符串,鼓励把代码可以分成多个行,也是为提高可读性。

    $company = 'Zend' . ' ' . 'Technologies';

     

    $sql = "select  `id`, `name`  from `people` "

         . "where `name` = 'Susan' "

         . "order by `name` ASC ";

         

    2.3 数组

    2.3.1 关联数组

    当用声明关联数组,array 我们鼓励把代码分成多行,在每个连续行的开头用TAB填补来对齐键和值。

    $sample_array = array(

    'first_key' => 'firstValue',

    'second_key' => 'secondValue'

    );

    2.4 类

    2.4.1 类的声明

    用类的的命名规则来命名类。花括号应当从类名下一行,开始类中所有代码必需用四个空格缩进类中所有代码。

    class sample_class

    {

        // 类的所有内容

        // 必需缩进四个空格

    }

    2.5 类成员变量

    用变量的的命名规则来命名类成员变量。变量的声明必须在类的顶部,在方法的上方声明。 不允许使用 var,要用 private、 protected 或 public声明它们的可见性。

    2.6 函数和方法

    2.6.1 函数和方法声明

    用函数名命名规则来命名函数和方法。在类中的函数必须用 private、 protected 或 public 声明它们的可见性。象类一样,花括号从函数名的下一行开始。函数名和括参数的圆括号中间没有空格。强烈反对使用全局函数。 下面是可接受的在类中的函数声明的例子:

    正确示例:

    class foo

    {

        

        public function bar()

        {

            // 函数的所有内容

            // 必需缩进四个空格

        }

    }

     

    错误示例:

    class foo

    {

        

        public function bar(&$baz)

        {

            // 函数的所有内容

            // 必需缩进四个空格

        }

    }

    注:调用时严格禁止引用传递 返回值不能在圆括号中,这妨碍可读性而且如果将来方法被修改成传址方式,代码会有问题。

    class foo

    {  

        //正确示例

        public function bar()

        {

            return $this->bar;

        }

     

        //错误示例:

        public function bar()

        {

            return($this->bar);

        }

    }

    2.6.2 函数和方法的用法

    函数的参数应当用逗号加空格如(, )。传址方式在调用的时候是严格禁止的,参见函数的声明一节如何正确使用函数的传址方式。带有数组参数的函数,函数的调用可包括 "array" 提示并可以分成多行来提高可读性,同时,书写数组的标准仍然适用。

    three_arguments(1, 2, 3);

    three_arguments(array(1, 2, 3), 2, 3);

    three_arguments(array(

    1, 2, 3, 'Zend', 'Studio',

    $a, $b, $c,

    56.44, $d, 500

    ), 2, 3);   

    2.8 控制语句

    2.8.1 if/else/elseif

    使用 if and elseif 的控制语句在条件语句的圆括号左对齐

    if ($a != 2)

    {

        $a = 2;

    }

    else

    {

        $a = 7;

    }

    2.8.2 Switch

    "switch" 结构里的控制语句在条件语句的圆括号左对齐。"switch" 里的代码必须有四个空格缩进,在"case"里的代码再缩进四个空格。 switch 语句应当有 default。

    switch ($numPeople)

    {

        case 1:

            break;

        case 2:

            break;

        default:

            break;

    }

    2.9 注释文档

    2.9.1 格式

    所有文档块 ("docblocks") 必须和 phpDocumentor 格式兼容,phpDocumentor 格式的描述超出了本文档的范围,关于它的详情,参考: http://phpdoc.org/

    2.9.2 文件

    php文件 头部注释

    <?php

    /**

     * 新房楼盘库底层数据类

     *

     * @author xxx <xxx@leju.com>

     */

     

    2.9.3 类

    /**

     * 类的简述。

     *

     * 类的详细描述 (如果有的话)... ...

     *

     * @author     xxx <xxx@leju.com>

     */

    class fw_module_gather

    {

     

    2.9.4 函数(方法,接口)注释

    每个函数,包括对象方法,必须有最少包含下列内容: 函数的描述 所有参数 所有可能的返回值

    /**

     * 获取一行数据

     *

     * @param array $condition 查询条件数组

     * @param string $field 数据库查询字段数据,默认是全部字段

     * @return array

     */

    public function fetchRow($condition = '', $field = '*')

    {

    $test = array();

    return $test;

    }

    2.9.5 程序行间注释

    行间注释采用双斜线注释法

    //根据城市中文名称,搜索城市详细信息

    $city_res = $this->_module_city->search_city($city);

    SVN提交说明

    SVN提交代码必须加入相关说明文字

    SVN提交代码必须填写与本次提交相关的说明文字,不能简单的填写“1.0”、“修复bug”、“上线”之类的说明,必须说明具体添加什么功能,修复具体的问题等,可参考以下SVN提交场景。

    SVN提交相关场景

    添加功能:

    1、添加微信用户群发功能

    2、微信用户语音识别功能上线

    3、增加E金券在线支付功能

    4、微信触屏版增加置业顾问列表页面

    修改功能:

    1、修改触屏版切换城市功能

    2、修改微信后台管理员内容权限功能

    3、修改客户消息即时回复功能

    修复BUG:

    1、修复触屏版首页城市定位不准确问题

    2、修复微信用户昵称为空bug

    3、修复微信用户分组未同步问题

    4、修复微信触屏版看房团页面空白问题

    增加文件

    1、添加微信操作类库文件

    2、添加微博SDK文件

    3、添加PHPExcel插件

    以上列出的是一些实用场景,提交代码时可参考根据实际代码情况填写说明

  • 相关阅读:
    神经网络梯度下降的推导
    在虚拟环境里安装TensorFlow-cpu完成Ng作业
    利用anaconda配置虚拟环境
    Java基础(三)面向对象(下)
    Java基础(二)面向对象(上)
    Java基础(一)
    《深入理解计算机系统》阅读笔记--程序的机器级表示(上)
    《深入理解计算机系统》阅读笔记--信息的表示和处理(下)
    《深入理解计算机系统》阅读笔记--信息的表示和处理(上)
    《深入理解计算机系统》阅读笔记--计算机系统漫游
  • 原文地址:https://www.cnblogs.com/hellohell/p/6114463.html
Copyright © 2020-2023  润新知