PHP开发规范

文章目录

  • PHP开发规范
    • 1. 编写目的
    • 2. 整体要求
    • 3. 安全规范
      • 3.1. 包含文件
        • 3.1.1. 命名规则
        • 3.1.2. 存放规则
        • 3.2. 安全规则
    • 4. 编码规范
      • 4.1. 命名规范
        • 4.1.1. 变量命名
        • 4.1.2. 类命名
        • 4.1.3. 方法或函数

PHP开发规范

1. 编写目的

为了更好的提高技术部的工作效率,保证开发的有效性和合理性,并可最大程度的提高程序代码的可读性和可重复利用性,指定此规范。开发团队根据自己的实际情况,可以对本规范进行补充或裁减。

2. 整体要求

技术部php开发规范将参照PEAR的规范,基本采用PEAR指定的规范,在其基础上增加、修改或删除部分适合具体开发环境的规范。本规范只针对PHP开发过程中编码的规范,对于PHP开发项目中文件、目录、数据库等方面的规范,将不重点涉及。
  本规范包含了PHP开发时程序编码中命名规范、代码缩进规则、控制结构、函数调用、函数定义、注释、包含代码、PHP标记、文件头的注释块、CVS标记、URL样例、常量命名等方面的规则。

3. 安全规范

当我们尝试编码时,很多时候不知道如何去让自己的代码变得安全一点,因为我们缺乏安全常识,安全常识的规范可以帮你杜绝一些日常的菜鸟黑客的攻击,却不能阻止骨灰级专家们的凌厉攻势,所以更高深的安全我们还得从其他途径学习。

3.1. 包含文件

PHP文件的包含在通过PHP的函数引入文件时,由于传入的文件名没有经过合理的校验,从而操作了预想之外的文件,就可能导致意外的文件泄露甚至恶意的代码注入。

3.1.1. 命名规则

提取出来具有通用函数的包含文件,文件后缀以.inc来命名,表明这是一个包含文件。
  如果有多个.inc文件需要包含多页面,请把所有.inc文件封装在一个文件里面,具体到页面只需要包换一个.inc文件就可以了。如:xxx_session.inc、xxx_comm.inc、xxx_setting.inf、myssql_db.inc。
  把以上文件以以下方式,封装在xxx.basic.inc文件里面:

	require_once('xxx_session.inc');
	require_once('xxx_comm.inc');
	require_once('xxx_setting.inc');
	require_once('mysql_db.inc');

注意: 是否需要封装到一个文件,视情况而定,如果每个inc的功能是分散到不同的页面使用的话,就不建议封装。

3.1.2. 存放规则

一般包含文件不需要直接暴露给用户,所以应该放在 Web Server 访问不到的目录,避免因为配置问题而泄露设置信息。

3.2. 安全规则

检查是否做了HTML代码的过滤
  可能出现的问题:如果有人输入恶意的HTML代码,会导致窃取cookie, 产生恶意登录表单,和破坏网站。

检查变量做数据库操作之前是否做了escape
  可能出现的问题:如果一个要写入查询语句的字符串变量包含了某些特殊的字符,比如引号(’,")或者分号( 可能造成执行了预期之外的操作。
  建议采用的方法:使用mysql_escape_string()或实现类似功能的函数。
  
检查输入数值的合法性
  可能出现的问题:异常的数值会造成问题。如果对输入的数值不做检查会造成不合法的或者错误的数据存入UDB、存入其它的数据库或者导致意料之外的程序操作发生。
  
核实对cookie的使用以及对用户数据的处理
  可能出现的问题:不正确的cookie使用可能造成用户数据泄漏。
  
访问控制
  对内部使用的产品或者供合作方使用的产品,要考虑增加访问控制。
  
logs
  确保用户的保密信息没有记在log中(例如:用户的密码);
  确保对关键的用户操作保存了完整的用户访问记录。
  
https
  对敏感数据的传输要采用https。

4. 编码规范

对代码文件及代码进行规范化。

4.1. 命名规范

制定统一的命名规范对于项目开发来说非常重要,不但能增加程序的可读性、可移植性和可重用性,还能很好的提高项目开发的效率。

4.1.1. 变量命名

变量命名分为普通变量、静态变量、局部变量、全局变量、Session变量等方面的命名规则。

1.普通变量
  普通变量命名遵循以下规则:
    a.首字母小写;
    b.使用驼峰命名。
    例如:$baseDir、$redRosePrice等。
  
  2.静态变量
  静态变量命名遵循以下规则:
    a.静态变量使用“s”开头;
    b.使用驼峰命名。
    例子:$sBaseDir、$sRedRosePrise等。
  
  3.局部变量
  局部变量命名遵循以下规则:
    a.使用驼峰命名;
    b.变量使用_开头。
    例子:$_baseDir、$_redRosePrice等。

4.全局变量
  不要使用global类型的全局变量!使用配置文件代替。
  
  5.全局常量
  全局变量命名遵循以下规则:
    a.所有字母使用大写;
    b.全局变量多个单词间使用_作为间隔。
    例子:
    define(‘BASE_DIR’,’/base/dir/’);
    define(‘RED_ROSE_PRICE’,20.0);
    
  6.session变量
  session/cookie变量命名遵循以下规则:
    a.所有字母使用大写;
    b.session变量名使用S_开头,cookie变量名使用C_开头;
    c.多个单词间使用_间隔。
    例子:$S_BASE_DIR、$S_RED_ROSE_PRICE、$C_BASE_DIR等。

4.1.2. 类命名

PHP中类命名遵循以下规则:
    a.以大写字母开头;
    b.多个单词组成的变量名,单词之间不用间隔,各个单词首字母大写。
    例子:class MyClassclass DbOracle等。

4.1.3. 方法或函数

方法或函数命名遵循以下规则:
    a.首字母小写;
    b.多个单词间不使用间隔,除第一个单词外,其他单词首字母大写。
    例子:function myFunction()function myDbOracle()等。

以上为现阶段比较适用的PHP开发规范,欢迎各位参考以及给出建议。

你可能感兴趣的:(PHP)