前往顾页
以后地位: 主页 > 收集编程 > Php实例教程 >

比较全的php开辟编码标准

时候:2015-02-04 21:30来源:知行网www.zhixing123.cn 编辑:麦田守望者

目次
1 编写目标
2 团体请求
3 宁静标准
3.1 包含文件
3.1.1 定名法则
3.1.2 存放法则
3.2 宁静法则
3.3 一些针对PHP的法则
3.4 别的措置法则
3.4.1 对输入参数值进行转义措置
3.4.2 操纵年夜HTML文本

4 编码标准
4.1 定名标准
4.1.1 变量定名
4.1.2 类
4.1.3 体例或函数
4.1.4 缩写词
4.1.5 数据库表名
4.1.6 数据库字段
4.2 誊写法则
4.2.1 代码缩进
4.2.2 年夜括号{ }誊写法则
4.2.3 小括号( )和函数、关头词等
4.2.4 =标记誊写
4.2.5 if else swith for while等誊写
4.2.6 类的机关函数
4.2.7 语句断行, 每行节制在80个字符以内
4.2.8 不要不成思议的数字
4.2.9 true/false和0/1判定
4.2.10 避免嵌入式赋值
4.2.11 错误前往检测法则
4.3 法度注释
4.3.1 法度头注释块
4.3.2 类的注释
4.3.3 函数和体例的注释
4.3.4 变量或语句注释
4.4 其他标准(建议)
4.4.1 php代码标识表记标帜
4.4.2 法度文件名、目次名
4.4.3 PHP项目凡是的文件目次布局
4.4.4 PHP和HTML代码的分离问题
4.4.5 PHP项目开辟中的法度逻辑布局
5 特定环境下PHP编码特别标准
5.1 变量定义
5.2 援引的利用
5.3 变量的输入输入

1 编写目标
为了更好的进步技术部的事情效力,包管开辟的有效性和公道性,并可最年夜程度的进步法度代码的可读性和可反复操纵性,指定此标准。开辟团队按照本身的实际环境,可以对本标准进行弥补或淘汰。

2 团体请求
技术部php开辟标准将参照PEAR的标准,根基采取PEAR指定的标准,在其根本上增加、点窜或删除部分适合详细开辟环境的标准。本标准只针对PHP开辟过程中编码的标准,对PHP开辟项目中文件、目次、数据库等方面的标准,将不重点触及。
本标准包含了PHP开辟时法度编码中定名标准、代码缩进法则、节制布局、函数调用、函数定义、注释、包含代码、PHP标识表记标帜、文件头的注释块、CVS标识表记标帜、URL样例、常量定名等方面的法则。

3 宁静标准

3.1 包含文件

3.1.1 定名法则
提取出来具有通用函数的包含文件,文件后缀以.inc来定名,表白这是一个包含文件。
如果有多个.inc文件需求包含多页面,请把所有.inc文件封装在一个文件内里,详细到页面只需求包换一个.inc文件便可以了
如:xxx_session.inc
xxx_comm..inc
xxx_setting.inc
mysql_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

3.3 一些针对PHP的法则
设置 register_globals = off (Y!PHP 已避免了register_globals,如果你利用Y!PHP可以不考虑这项设置)
设置 error_reporting = E_ALL (Y!PHP 的缺省设置),并且要修改所有的error和warning
将实际的操纵放在被援引的文件中。把援引文件放到不成以被直接浏览的目次下

3.4 别的措置法则

3.4.1 对输入参数值进行转义措置
页面接到参数需求SQL操纵,这时候辰需求做转义,特别需求重视”;”。
如:$a = ” Let’s go ” ;
$sql = “Insert into tmp(col) values(’$a’)” ;
这类环境呈现错误的不肯定性。

3.4.2 操纵年夜HTML文本
很多时候需求存放一年夜段HTML文本供页面利用,象用户定制页头页脚等。
需求剔除脚本标识表记标帜,避免履行歹意php代码。
转换”<"">“号,包管代码完整。

4 编码标准

4.1 定名标准
制定同一的定名标准对项目开辟来讲非常首要,不单可以养成法度员一个杰出的开辟习惯,还能增加法度的可读性、可移植性和可重用性,还能很好的进步项目开辟的效力。

4.1.1 变量定名
变量定名分为浅显变量、静态变量、部分变量、全局变量、Session变量等方面的定名法则。

4.1.1.1 浅显变量
浅显变量定名遵守以下法则:
a. 所有字母都利用小写;
b. 对一个变量利用多个单词的,利用’_’作为每个词的间隔。
比方:$base_dir、$red_rose_price等

4.1.1.2 静态变量
静态变量定名遵守以下法则:
a. 静态变量利用小写的s_开首;
b. 静态变量所有字母都利用小写;
c. 多个单词构成的变量名利用’_’作为每个词的间隔。
例子:$s_base_dir、$s_red_rose_prise等。

4.1.1.3 部分变量
部分变量定名遵守以下法则:
a. 所有字母利用小写;
b. 变量利用’_’开首;
c. 多个单词构成的部分变量名利用’_’作为每个词间的间隔。
例子:$_base_dir、$_red_rose_price等。

4.1.1.4 全局变量
全局变量应当带前缀’g’,晓得一个变量的感化域是非常首要的。
比方
global $gLOG_LEVEL;
global $gLOG_PATH;

4.1.1.5 全局常量
全局变量定名遵守以下法则:
a. 所有字母利用年夜写
b. 全局变量多个单词间利用’_’作为间隔。
例子:$BASE_DIR、$RED_ROSE_PRICE等。

4.1.1.6 session变量
session变量定名遵守以下法则:
a. 所有字母利用年夜写;
b. session变量名利用’S_’开首;
c. 多个单词间利用’_’间隔。
例子:$S_BASE_DIR、$S_RED_ROSE_PRICE等。

4.1.2 类
php中类定名遵守以下法则:
a. 以年夜写字母开首;
b. 多个单词构成的变量名,单词之间不消间隔,各个单词首字母年夜写。
例子:class MyClass 或class DbOracle等。

4.1.3 体例或函数
体例或函数定名遵守以下法则:
a. 首字母小写;
b. 多个单词间不利用间隔,除第一个单词外,其他单词首字母年夜写。
例子:function myFunction ()或function myDbOracle ()等。

4.1.4 缩写词
当变量名或其他定名中碰到缩写词时,参照详细的定名法则,而不采取缩写词本来的全数年夜写的体例。
例子:function myPear(不是myPEAR) functio getHtmlSource(不是getHTMLSource)。

4.1.5 数据库表名
数据库表名定名遵守以下标准:
a. 表名均利用小写字母;
b. 对浅显数据表,利用_t末端;
c. 对视图,利用_v末端;
d. 对多个单词构成的表名,利用_间隔;
例子:user_info_t和book_store_v等

4.1.6 数据库字段
数据库字段定名遵守以下标准:
a. 全数利用小写;
b. 多个单词间利用_间隔。
例子:user_name、rose_price等。

4.2 誊写法则
誊写法则是指在编写php法度时,代码誊写的法则,包含缩进、布局节制等方面标准:

4.2.1 代码缩进
在誊写代码的时候,必须重视代码的缩进法则,我们规定代码缩进法则以下:
a. 利用4个空格作为缩进,而不利用tab缩进(对ultraedit,可以进行事后设置)
例子:
for ( $i=0;$i<$count;$i++ )
{
echo "test";
}

4.2.2 年夜括号{ }誊写法则
在法度中进行布局节制代码编写,如if、for、while、switch等布局,年夜括号传统的有两种誊写习惯,别离以下:
a.{直接跟在节制语句以后,不换行,如
for ($i=0;$i<$count;$i++) {
echo "test";
}
b.{在节制语句下一行,如
for($i=0;$i<$count;$i++)
{
echo "test";
}
此中,a是PEAR建议的体例,但是从实际誊写中来讲,这其实不影响法度的标准和影响用phpdoc实现文档,所以可以按照小我习惯来采取下面的两种体例,但是请求在同一个法度中,只利用此中一种,以避免造成浏览的不便利。

顶一下
(2)
100%
踩一下
(0)
0%
------分开线----------------------------
标签(Tag):php php开辟编码标准
------分开线----------------------------
颁发评论
请自发遵循互联网相关的政策法规,严禁公布色情、暴力、革命的谈吐。
评价:
神色:
考证码:点击我更换图片
猜你感兴趣