热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

PHP编程风格规范分享

本规范由EasyChen借鉴SINA网络应用开发部《C++开发规范》和互动技术部《PHP4开发规范》,以及phpDocument规范整理出的开发规范。我觉得非常不错,适合PHP的

本规范由 EasyChen 借鉴 SINA网络应用开发部《C++开发规范》和互动技术部《PHP4开发规范》,以及phpDocument规范 整理出的开发规范。我觉得非常不错, 适合PHP的

说明:本规范由 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 |
// +----------------------------------------------------+
// | This source file is subject to PHP License |
// +----------------------------------------------------+
//

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

3.2.2文件头注释示例

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

PHP 代码:

代码如下:

推荐阅读
  • 延迟注入工具(python)的SQL脚本
    本文介绍了一个延迟注入工具(python)的SQL脚本,包括使用urllib2、time、socket、threading、requests等模块实现延迟注入的方法。该工具可以通过构造特定的URL来进行注入测试,并通过延迟时间来判断注入是否成功。 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • Oracle分析函数first_value()和last_value()的用法及原理
    本文介绍了Oracle分析函数first_value()和last_value()的用法和原理,以及在查询销售记录日期和部门中的应用。通过示例和解释,详细说明了first_value()和last_value()的功能和不同之处。同时,对于last_value()的结果出现不一样的情况进行了解释,并提供了理解last_value()默认统计范围的方法。该文对于使用Oracle分析函数的开发人员和数据库管理员具有参考价值。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 本文由编程笔记小编整理,介绍了PHP中的MySQL函数库及其常用函数,包括mysql_connect、mysql_error、mysql_select_db、mysql_query、mysql_affected_row、mysql_close等。希望对读者有一定的参考价值。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • 推荐系统遇上深度学习(十七)详解推荐系统中的常用评测指标
    原创:石晓文小小挖掘机2018-06-18笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值, ... [详细]
  • 本文介绍了绕过WAF的XSS检测机制的方法,包括确定payload结构、测试和混淆。同时提出了一种构建XSS payload的方法,该payload与安全机制使用的正则表达式不匹配。通过清理用户输入、转义输出、使用文档对象模型(DOM)接收器和源、实施适当的跨域资源共享(CORS)策略和其他安全策略,可以有效阻止XSS漏洞。但是,WAF或自定义过滤器仍然被广泛使用来增加安全性。本文的方法可以绕过这种安全机制,构建与正则表达式不匹配的XSS payload。 ... [详细]
author-avatar
PLDLYY
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有