异景网络,提供企业网站建设,SEO优化推广,网站开发等服务。 官方微信 官方博客 IDC网站
安阳网站建设官方微信

您的位置:网站首页 >学做网站>做网站教程

史上最全PHP开发规范

2018-04-29 14:48 来源:异景网络科技



新人可以很快的适应环境;防止新接触PHP的人一次次的犯同样的错误;在一致的开发环境下,可以减少人们犯错的机会。本规范的标准在绝对多数应用上为仿照Java技术体系,因为Java技术体系以其众多成功的案例成为大部分计算机应用层的工业标准,此外便于日后公司向Java技术体系转型。



命名定义篇


局部变量命名


使用英文名词、动词,以大写字母作为单词的分隔,其他的字母均使用小写,单词的首个字母使用小写,不使用下划线,例:


$repeatCount = '';


$delUserSql  = '';


全局常量命名


使用英文名词、动词,所有字母都使用大写,以下划线分隔每个单词,例:


define( 'WEBSITE_NAME', '名称' );


define( 'WEBSITE_URL',  '地址' )


数组变量命名


使用英文名词、动词,以大写字母作为单词的分隔,其他的字母均使用小写,单词的首个字母使用小写,不使用下划线,以字符串Array为后缀,例:


$scopeArray  = array();


$bookIdArray = array();


静态变量命名


使用英文名词、动词,以大写字母作为单词的分隔,其他的字母均使用小写,单词的首个字母使用小写,不使用下划线,以字符串Static为后缀,例:


function getDirectoryFile()


{


static $fileArrayStatic = '';


static

$fileNumStatic   = '';


...


}


对象变量命名


使用类名称为变量前缀,所有字母都使用大写,以字符串_OBJECT为后缀,例:


$USERACCOUNT_OBJECT   = new UserAccount();


$PAINTINGORDER_OBJECT = new

PaintingOrder();


类命名


使用英文名词,以大写字母作为词的分隔,其他的字母均使用小写,名词的首个字母使用大写,不使用下划线,例:


class UserAccount


{


...


}


class PaintingOrder


{


...


}


方法命名


使用英文名词、动词,以大写字母作为词的分隔,其他的字母均使用小写,单词的首个字母使用小写,不使用下划线,例:


class UserAccount


{


function isAccountOk()


{


...


}


function addAccount()


{


...


}


}


方法中参数命名


使用英文名词、动词,以大写字母作为词的分隔,其他的字母均使用小写,单词的首个字母使用小写,不使用下划线,例:


class UserAccount


{


function isAccountOk( $accountName )


{


$this->accountName = $accountName;


...


}


function addAccount( $inputDataArray )


{


$this->inputArray =

$inputDataArray;


...


}


var $accuntName = '';


var $inputArray = '';


}


类属性命名


使用英文名词、动词,以大写字母作为词的分隔,其他的字母均使用小写,单词的首个字母


使用大写,不使用下划线,对于类属性为某个对象变量,则以字符串Object为后缀,例:


class UserAccount


{


function IsAccountOk()


{


...


}


function AddAccount()


{


...


}


var $tableName      = '';


var $databaseObject = '';


}


三、语法书写篇


大括号{}规则


将大括号放置在关键词下方的同列处,例:


if ( $condition )


{


...


}


不使用此种方式:


if ( $condition ) {


...


}


代码缩进规则


使用制表符缩进(TAB键)或四个空格。如果缩进层数大于四的时候,请重新设计该项业务逻辑的算法。


小括号()规则


不要把小括号和关键词、方法名、方法参数紧贴在一起,要用一个空格分隔,例:


if ( $condition )


{


...


}


function addAccount( $inputDataArray )


{


...


}


由于小括号与关键词等紧贴容易被看成是一体,因此不要使用以下方式,例:


if ($condition) {


...


}


function addAccount($inputDataArray)


{


...


}


if .. else ... 规则


通常最好有一个else块以用于处理未处理到的或未知的其他情况,即使条件处理语句只有一个也必须使用大括号{},例:


if ( $condition1 )


{


...


}


else if ( $condition2

)


{


...


...


}


else


{


...


}


尽可能避免以下使用方式,例:


if ( $condition1 )


...


else


...


switch规则


每个case块结束处必须加上break,而default总应该存在处理未知情况,例:


switch( $condition )


{


case $value1:


...


break;


case

$value2:


...


break;


default:


...


break;


}


声明定位规则


声明代码块需要对齐,且初次使用变量时需要初始化,例:


var $tableName      = '';


var $databaseObject = '';


不使用以下方式,例:


var $tableName;


var $accuntName = '';


var $databaseObject = '';


四、其它说明篇


所有类方法必须有返回值,除结果简单外返回true或者false之外,其它方法应返回不同的值


以交作流程进一步处理。


html的form表单统一不设置submit按钮的名称属性(name)。


html的form表单各个元素名称与数据库字段保持一致。


每行一个语句。


不要采用缺省方法测试非零值,必须显式测试,例:


if ( false != $this->IsAccountOk()

)


{


...


}


else


{


...


}


不要使用以下方式,例:


if ( $this->IsAccountOk()

)


{


...


}


else


{


...


}


不要使用三元逻辑符 ? :,但对变量的赋值除外,例:


$_GET['act']   = !empty( $_GET['act'] ) ? $_GET['act'] : 'v_login';


统一使用<?PHP ?>,禁止使用<? ?>格式。


对于get、post、session类型变量,必须使用$_GET、$_POST、$_SESSION方式定义和调用。


尽可能使用单引号''而不是双引号''。


使用完毕后的数组变量、对象变量、查询集合必须马上使用unset()、free_result()释放资源。


一个PHP文件只能包含一个类定义编码,以类名称作为文件名称。


PHP文件中绝不能出现html语句,html文件中尽可能避免出现PHP语句。


html文件必须通过w3c的html4检测认证(http://validator.w3.org/

)。


如果发觉您在程序中的命名只有少量能和其对应事物相匹配的话,请重新设计系统。


在为类命名前首先要知道它是什么。如果通过类名提供的线索,您还是想不起这个类是什么的话,


那么您的设计是做得不够好。


超过三个单词组成的混合名是容易造成系统各个实体间的混淆,请重新设计类。


通常每个方法只执行一项逻辑动作事务,所以对它们的命名应该清楚的说明它们是做什么的:用checkForErrors()代替errorCheck(),用dumpDataToFile()代替dataFile()。


这么做使功能和数据成为更可区分的物体。


五、程序注释篇


类的注释


/*


* Purpose:


* 作为通用接口访问数据库的类


* Class Name:


* Database


*

Author:


* unixdotnetphpboke@163.com


* Modifications:


*

2004-08-18 09:15


* 添加db_insert_id()方法


* unixdotnetphpboke@163.com


* See: 参照说明


*/


class Database


{


……


}


类方法的注释


/*


* Purpose:


* 取得上一步数据库insert操作产生的id


* Method Name:


*

getInsertId()


* Parameter:


* Return:


* int


* Author:


* unixdotnet

phpboke@163.com


* Modifications:


* 2004-08-18 09:15


* 修改原因


* unixdotnet phpboke@163.com


* See: 参照说明


*/


function getInsertId()


{


...


}


类属性的注释


class Database


{


/*


* Purpose:


* 连接数据库所需的用户名


*

Attribute Name:


* $databaseUserName


* Type: string


* Author:


*

unixdotnet phpboke@163.com


*

Modifications:


* 2004-08-18 09:15


* 修改原因


* unixdotnet phpboke@163.com


* See: 参照说明


*/


var $databaseUserName;


...


}


六、数据库应用篇


数据库的设计必须符合三个范式(极端要求常用高速时考虑单独设置记录表除外)。


数据库名称应该由概述项目内容的小写英文名词组成,以下划线分隔单词,


避免跨平台时可能出现的大小写错误。


数据表名称应该由物件对象名称的小写英文名词组成(尽可能对应系统中的业务类名称),


以下划线分隔单词,避免跨平台时可能出现的大小写错误。


数据表的字段应避免使用varchar、text等不定长的类型,时间信息的字段使用unix tiemstamp类型存储。


查询数据时禁止使用*通配符避免占用资源加速处理速度,尽量避免使用临时表。


查询数据连接多表时各资源应该使用全名称,即tableName.fieldName,而不是fieldName。


SQL语句应尽可能符合ansi92标准,避免使用特定数据库对SQL语言的扩充特性。


开发结束后,必须针对SQL查询语句的条件语句部分(where)添加索引,


须匹配多个条件的应该使用聚合索引。


索引的组成应由左至右匹配条件语句的顺序。


严禁盲目添加索引,避免减慢数据插入的速度、增大占用空间及减慢查询速度。


每当数据库(表)发生结构性变化时须登记保存;日常须定时(不超过三个工作日)


备份数据库结构及其数据。

1.

给php变量赋值为字符串,尽量用单引号。单引号速度要快很多。


2.

给php变量赋值时,值中带变量,就的用双引号了,双引号能自动解析变量,方便很多。


如$b=blue; $a="php$b"; echo $a;

输出phpblue (单双引号各有千秋啊)


3. html内尽量用双引号,无论多长拿到php中首尾加单引号就行,甭怕错。



虽然PHP的发展前途不容小嘘,但选择一个好的培训基地也是至关重要的。11年来兄弟连教育精心打造PHP课程,专业的研发团队打造了全新、紧跟时代前沿的PHP课程体系,抓住企业核心需求。

兄弟连教育PHP教学师资团队也是是从知名IT企业专家及技术精英组成,具有多年的大型项目实战经验和教学经验,可以让PHP培训学员由浅入深的学习,技术上不但能得到提升,就业时也更有优势。


史上最全PHP开发规范相关文章

返回首页

HOME
关于我们

异景网络科技,致力于提供一站式企业网站建设服务,包括品牌及企业网站建设、河南做网站、 网站设计、郑州网站建设、安阳网站开发等。以精而专的态度和优质化的建站服务,成为知名网站建设公司。 行业发展积淀。经验丰富的设计团队、精准策划人员和完善的服务顾问,保障优高水准网站建设。

联系我们
郑州地址:中国·郑州市金水区金城国际6号楼
安阳地址:安阳文峰区东风路文峰旺角
客服热线:
腾讯 Q Q:874047918
电子邮箱:874047918@qq.com
扫描二维码
帮您解答建站问题
Copyright © 2010-2018 All Rights Reserved. 网站备案号:豫ICP备19017326号-4