PHP编码规范

为什么需要编码规范?

  • 为了提高工作效率,保证开发的有效性和合理性。

  • 为了提高代码可读性和可重复利用性,从而节约沟通成本。

本文主要参考了 PEAR 规范,并进行适当的简化和调整。

主要介绍,命名规范注释规范代码风格

文件标记

所有PHP文件,代码标记均使用完整的PHP标签,不建议使用短标签。

<?php
  echo 'Hello world';
?>

<?
  //短标签不推荐
  echo 'Hello world';
?>

文件格式

文件编码 为无 BOM 的 UTF-8。

􏶍纯PHP类文件,文件最后 ?> 要省略。

TextMate

在 "文件编码" 中,选择 "UTF-8(推荐)"
在 "换行符" 中,选择 "LF(推荐)"

文件命名

程序的文件名和目录名都采用有意义的英文命名。

不使用拼音或无意义的字母。

只允许出现字母、数字、下划线、中划线字符。

多个词之间使用驼峰命名法。

//类统一采用
demoTest.class.php

//接口统一采用
demoTest.interface.php

//其他按照各自的方式
demoTest.{style}.php

//其他文件参照
demoTest.inc.php
demo.lib.php

文件目录结构命名

因使用的框架不同,可根据实际情况考虑目录结构。

全局变量命名

$_GLOBAL['_startTime_']

or

$_GLOBAL['g_startTime_']

两边都有“_”,中间使用驼峰命名。

普通变量命名

数据类型 命名规范
字符串 $strMyStr
数组 $arrMyArray
对象 $objMyObject
布尔值 $flagMyFlag

采用驼峰命名,建议在变量前加上变量的类型作为前缀。

变量应该以名词为准,尽量避免使用常用关键字或存在模糊意义的单词。

私有变量,建议加上前缀"_"。

函数命名

函数名即要有意义,也要尽量缩写,一看就知道干什么。

建议单用动词或动词加形容词的格式命名。

私有方法,建议在加上前缀"_"。

//例如
private function _showMsg()
{
   //方法体
}

不建议下面这样的函数名:

public function getAdvertisementByCategoryIdAndPositionIdAndScheduleId()
{
   //方法体
}

可修改为:

public function getAd($categoryid, $positionid, $scheduleid)
{
   //方法体
}

习惯与约定

为了减少变量的长度,在不影响可读性的前提下,习惯对变量进行缩写。

全称 缩写
image img
string str
database db
array arr
count cnt
message msg
password passwd 或 pwd
... ...

以上规范可用于,PHP代码、JavaScript代码、数据库表字段命名等。

文件注释

/**
 * 文件的简述
 *
 * PHP Version 6(PHP版本)
 *
 * @category  可以写部门(英文)
 * @package   可以写模块(英文)
 * @author    test <test@company.com>
 * @time      2017/02/02 11:48
 * @copyright 2017 公司名称
 * @license   公司网址 license
 * @link      test@qq.com(作者联系方式)
 */

类注释

/**
 * 类的简述
 *
 * @category 可以写部门(英文)
 * @package  可以写模块(英文)
 * @author   test <test@company.com>
 * @license  公司网址 license
 * @link     test@qq.com(作者联系方式)
 */

方法注释

/**
 * 方法的简述
 * @param array  $myArray  参数解释
 * @param string $myString 参数解释
 * @return array(返回数据类型)
 */

代码注释

注释写在被注释代码的前面,而不是后面,但对于单行语句,注释可写在语句末尾。

对于大段注释,使用 /* */ 进行注释。

注释不宜太多,大家能看的懂得行不必注释。

代码注释应该描述为什么,而不是做什么。

不要为了注释而注释。

标注的使用

IDE 支持一些特殊注释,可以列出整个项目中的特殊注释,方便后期维护和代码检查。

例如:

//@fixMe 表示需要修复项。

//@todo 表示需要完善的地方。

代码风格

尽量保证程序语句一行就是一句。

尽量不要使一行的代码过长,一般控制在80个字符之间。

如果一行代码太长,请使用类似 “.=” 的方式断行书写。

类、方法的做大括号需要独占一行。

其他控制语句等大括号和表达式同一行,并空格隔开。

class Demo
{
    public function index()
    {
        for ($i = 1, $i < 10, $i++) {

        }
    }

    public function test()
    {
        if ($expr1) {
            //if body

        } elseif ($expr2) {
            //elseif body

        } else {
            //else body

        }

        foreach ($data as $key => $value) {
            //foreach body
        }

        switch ($expr1) {
            case 0:
                echo '零';
                break;
            case 1:
                echo '一';
                break;
            default:
                echo 'null';
                break;
        }

        //尽量同等意义的变量等号对其
        $strName     = $arrUserInfo['name'];
        $strAge      = $arrUserInfo['age'];
        $strBirthday = $arrUserInfo['birthday'];
        $strHobby    = $arrUserInfo['hobby'];
    }
}

调试代码

不要在你的提交的代码中包含调试代码,就算是注释掉了也不行。

像 var_dump() 、 print_r() 、 die() 和 exit() 这样的函数。

PHP错误

运行代码时不应该出现任何错误信息,并不是把警告和提示信息关掉来满足这一点。

例如,绝不要直接访问一个你没设置过的变量,你应该先使用 isset() 函数判断下。

最后

最后说的是,本规范不是强制,也不是标准。

“约定大于规范”,如果有的规范太死板,不适应您的团队,您可以不采用,按照您自己的规范即可。

推荐PHP开发IDE:PHPStorm

推荐阅读:

Mac PHPStorm 使用心得

PHP团队开发中遇到的那些坑,看我是如何解决的?


如果大家需要下载PDF,欢迎大家Q我(留言、私信均可) ~

Thanks ~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,271评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,275评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,151评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,550评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,553评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,559评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,924评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,580评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,826评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,578评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,661评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,363评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,940评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,926评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,872评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,391评论 2 342

推荐阅读更多精彩内容

  • 整理自 PHP 标准规范 作为程序员来说,采用统一的编码风格是非常重要的。这将给未来代码的编写、阅读节省大量时间。...
    野尘lxw阅读 704评论 0 2
  • 1.什么是RDS数据库? RDS数据库是在一个实例下创建的逻辑单元,一个实例可以创建多个数据库,在实例内数据库命名...
    Separes阅读 2,462评论 0 2
  • 转自:https://gold.xitu.io/post/589d7771128fe100580e7bcc 为什么...
    Separes阅读 269评论 0 0
  • 源文来自https://github.com/TIGERB/easy-tips,分享给大家 共同进步 编码规范 P...
    回眸淡然笑阅读 514评论 0 0
  • 编程规范在团体开发中能使程序员按照统一标准编程,消除了混乱和迷茫,能使他们将精力聚焦于更重要的事情,而不是变量如何...
    刚刚悟道阅读 381评论 1 3