PHP编程风格规范分享


Posted in PHP onJanuary 15, 2014

说明:本规范由 EasyChen 借鉴 SINA网络应用开发部《C++开发规范》和互动技术部《PHP4开发规范》,以及phpDocument规范 整理出的开发规范。我觉得非常不错, 适合PHP的开发,给大家参考,养成一个良好的编程风格是非常有必要的。

第1章 命名规范

1.1变量

1.1.1全局变量

全局变量使用$g_开头,如$g_data_list。

1.1.2 一般变量

一般的变量使用小写字母命名,单词之间使用下划线分隔。

变量名字应该使用名词或者形容词+名词的方式。如$value,$new_value。

1.1.3 临时变量

不要将在循环中频繁使用的临时变量如$i、$j等用于其它用途。

1.2 函数

函数采用小写字母命名,单词之间使用下划线分隔。

函数的命名建议使用动词+名词的方式,如get_user_img。

完成一组功能的函数放到一个文件中,存放函数的文件采用function_name.func.php命名。

1.3 类

类使用英文的大小写来分隔单词,包括首个单词,所有单词的首字母大写,如PageManager;

在类中,方法放到属性定义前边、公用方法放到专用方法前边;

一般情况下,一个类对应到一个文件;

当一些类关系紧密时,可以存放在一个文件中;

存放类的文件采用ClassName.class.php方式命名。

1.4 方法

方法使用英文的大小写来分隔单词,除首个单词外,其他单词的首字母大写,如getCurrentPage();

不要采用不常用的缩写,如where2go();

使用常用的缩写时,只大写首字母,如getHtml()。

第2章 版式规则

2.1 语义分隔

各个函数、方法之间应该采用空行间隔;

同一个函数中联系紧密的语句之间可以不换行,其他情况需要换行。

2.2 空格规则

2.2.1 逻辑运算符前后必须加空格

正确

$a == $b;

错误

$a==$b;
$a ==$b;

正确

$a++; $a--;

错误

$a ++; $a --;

备注 加一减一运算符不能加空格。

2.2.2 多个参数分隔时必须加空格
正确

$g_pro , $g_user , g_show;  
get_db_info($host, $user, $passwd);

错误

$g_pro,$g_user,$g_show;  
get_db_info($host,$user,$passwd);

2.2.3 语法关键字后必须加空格

例如:If, for , while, switch …..
正确

for ($i = 0; $i < 10; $i++)

错误

for($i = 0; $i < 10; $i++ )

 2.3 字符串和变量连接规则
字符串与变量连接使用'.'号时,必须在'.'前后加空格,使用"号时,必须在变量前后加"{}"。
正确

$my_name = 'file_' . $var1;  
$my_name = "file_{$var1}";

错误

$my_name = "file_'.$var1;  
$my_name = "file_$var1";

2.4 圆括号规则
函数名后括号不需要加空格、语法关键字后的括号必须加空格。
正确

for ($i = 0; $i < 10; $i++)  
strlen($my_name);

错误

for($i = 0; $i < 10; $i++ )  
strlen ($my_name);

2.5 花括号规则
花括号必须为上下对应。

正确

if ($a)  
 {  
    $b = $a;  
 }

错误

if ($a){  
     $b = $a;  
 }

2.6 数组定义规则

数组定义和使用时中key值前后必须加单引号。
PHP 代码:
正确

array( 'name'   => '', 'gender'  => '' );   
$user_info['name'];

错误

array( name => '', gender    => '' );   
$user_info[name];

2.7 SQL规则

在PHP中嵌入的SQL语句关键字全部采用大写;
表名和字段名要用反引号(`)引起来以防止因为字段名中包含空格而出现错误;
数据值两边用单引号''包括,并且应确保数据值中的单引号已经转义以防止SQL注入。

正确

$sql = "SELECT `user`.`name` FROM `user` WHERE `id` = '$id' LIMIT 1";

错误

$sql = "select name.user from name where id = $id ";

第3章 注释规则

3.1 一般规则
不写不必要的注释;只有当代码不能很好地说明逻辑时,才用注释补充;
把注释看成程序的一部分,在编写/维护代码时同时编写/维护注释;
注释完全采用PHPDocumentor的规范,以方便用其生成API级文档。

3.2 详细规则
请参见PHPDocumentor手册。下边给出各个部分的注释示范。

3.2.1 版权信息
注释名称 版权信息
注释示范:

//
// +----------------------------------------------------+
// | phpDocumentor |
// +----------------------------------------------------+
// | Copyright (c) 2000-2003 Joshua Eichorn |
// | Email jeichorn@phpdoc.org |
// | Web http://www.phpdoc.org |
// +----------------------------------------------------+
// | This source file is subject to PHP License |
// +----------------------------------------------------+
//

 备注 使用//来标示版权信息,以免和PHPDocumentor的page-level DocBlock发生冲突

3.2.2文件头注释示例

注释名称 文件头注释
注释示范:

PHP 代码:

/**
* All abstract representations of inline tags are in this file
* @package phpDocumentor
* @subpackage InlineTags
* @since separate file since version 1.2
* @version $Id $
*/

备注
1)文件头注释需要指明所属的包和子包;
2)在@version中加上$ID,以方便使用CVS管理文件。

3.2.3 类注释示例
注释名称 类注释
注释示范:

PHP 代码:

/**
* Use this element to represent an {@}inline tag} like {@}link}
* @see parserStringWithInlineTags
* @package phpDocumentor
* @subpackage InlineTags
* @author Greg Beaver <cellog@users.sourceforge.net>
* @since 1.0rc1
* @version $Revision: 1.21.2.6 $
* @tutorial inlinetags.pkg
*/

3.2.4 类属性注释示例
注释名称 类属性注释
注释示范:
PHP 代码:

/**
* Element type
*
* Type is used by many functions to skip the hassle of
*
* <code>
* if get_class($blah) == 'parserBlah'
* </code>
* always "inlinetag"
* @var string
*/
var $type = 'inlinetag';

3.2.5 函数/类方法注释示例
注释名称 函数/类方法注释
注释示范:
PHP 代码:

/**
* @return string always ''
* calculate the short description of a DocBlock
* @see parserStringWithInlineTags::getString()
* @see parserStringWithInlineTags::trimmedStrlen()
*/
function getString()
{
 return '';
}
PHP 相关文章推荐
AJAX for PHP简单表数据查询实例
Jan 02 PHP
PHP采集腾讯微博的实现代码
Jan 19 PHP
分享一下贝贝成长进度的php代码
Sep 14 PHP
PHP实现自动登入google play下载app report的方法
Sep 23 PHP
yii实现model添加默认值的方法(2种方法)
Jan 06 PHP
php代码架构的八点注意事项
Jan 25 PHP
thinkPHP中验证码的简单实现方法
Dec 05 PHP
Symfony2针对输入时间进行查询的方法分析
Jun 28 PHP
利用Homestead快速运行一个Laravel项目的方法详解
Nov 14 PHP
PHP 实现人民币小写转换成大写的方法及大小写转换函数
Nov 17 PHP
用PHP的反射实现委托模式的讲解
Mar 22 PHP
TP5框架实现上传多张图片的方法分析
Mar 29 PHP
php object转数组示例
Jan 15 #PHP
windows下PHP_intl.dll正确配置方法(apache2.2+php5.3.5)
Jan 14 #PHP
PHP类继承 extends使用介绍
Jan 14 #PHP
那些年我们错过的魔术方法(Magic Methods)
Jan 14 #PHP
PHP mail()函数使用及配置方法
Jan 14 #PHP
PHP 登录完成后如何跳转上一访问页面
Jan 14 #PHP
PHP四舍五入精确小数位及取整
Jan 14 #PHP
You might like
深入array multisort排序原理的详解
2013/06/18 PHP
Laravel5.* 打印出执行的sql语句的方法
2017/07/24 PHP
用js实现的一个Flash滚动轮换显示图片代码生成器
2007/03/14 Javascript
代码生成器 document.write()
2007/04/15 Javascript
JQuery 国际象棋棋盘 实现代码
2009/06/26 Javascript
jQuery get和post 方法传值注意事项
2009/11/03 Javascript
文本框中,回车键触发事件的js代码[多浏览器兼容]
2010/06/07 Javascript
JS两种定义方式的区别、内部原理
2013/11/21 Javascript
javascript拖拽上传类库DropzoneJS使用方法
2013/12/05 Javascript
jsp网页搜索结果中实现选中一行使其高亮
2014/02/17 Javascript
js实现ifram取父窗口URL地址的方法
2015/02/09 Javascript
jQuery实现购物车计算价格功能的方法
2015/03/25 Javascript
jQuery插件MovingBoxes实现左右滑动中间放大图片效果
2017/02/28 Javascript
jQuery EasyUI 组件加上“清除”功能实例详解
2017/04/11 jQuery
JavaScript中Object值合并方法详解
2017/12/22 Javascript
浅谈PDF.js使用心得
2018/06/07 Javascript
angular.js实现列表orderby排序的方法
2018/10/02 Javascript
vue element 生成无线级左侧菜单的实现代码
2019/08/21 Javascript
vue-cli设置css不生效的解决方法
2020/02/07 Javascript
JavaScript实现浏览器网页自动滚动并点击的示例代码
2020/12/05 Javascript
python实现查找excel里某一列重复数据并且剔除后打印的方法
2015/05/26 Python
Python基于csv模块实现读取与写入csv数据的方法
2018/01/18 Python
Html5+JS实现手机摇一摇功能
2015/04/24 HTML / CSS
html5将图片转换成base64的实例代码
2016/09/21 HTML / CSS
美国汽配连锁巨头Pep Boys官网:轮胎更换、汽车维修服务和汽车零部件
2017/01/14 全球购物
LORAC官网:美国彩妆品牌
2019/08/27 全球购物
检察官就职演讲稿
2014/01/13 职场文书
创业者是否需要商业计划书?
2014/02/07 职场文书
老师的检讨书
2014/02/23 职场文书
蛋糕店创业计划书
2014/05/06 职场文书
销售人员求职信
2014/07/22 职场文书
小学关爱留守儿童活动方案
2014/08/25 职场文书
导游词之徐州-云龙山
2019/09/29 职场文书
CSS 伪元素::marker详解
2021/06/26 HTML / CSS
tomcat正常启动但网页却无法访问的几种解决方法
2022/05/06 Servers
Windows7下FTP搭建图文教程
2022/08/05 Servers