php开发规范

先生博客

文章最后更新时间:2022年01月27日

一、规范前言篇

标准化不是特殊的个人风格,它让程序员可以了解任何代码,弄清程序的状况;新人可以很快的适应环境;防止新接触php的人一次次的犯同样的错误;在一致的开发环境下,可以减少人们犯错的机会。本规范的标准在绝大多数应用上仿照java技术体系,因为java技术体系以其众多成功的案例成为大部分计算机应用层的工业标准,此外便于日后公司向java技术体系转型。

二、命名定义篇

局部变量命名

使用英文名词、动词,以下划线作为单词的分隔,字母均使用小写。例:

$repeat_count = '';

$del_user_sql  = '';

全局常量命名

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

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

define( 'WEBSITE_URL',  '地址' )

数组变量命名

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

$scope_array  = array();

$book_id_array = array();

静态变量命名

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

function getDirectoryFile(){

    static $file_array_static = '';

    static $file_num_static   = '';

    ...}

对象变量命名

使用类名称为变量前缀,所有字母都使用小写,单词以下划线链接,以字符串_object为后缀,例:

$user_account_object   = new UserAccount();

$painting_order_object = new PaintingOrder();

类命名

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

class UserAccount{

    ...}class PaintingOrder{

    ...}

方法命名

公共方法 使用英文名词、动词,以下划线作为单词的分隔,字母均使用小写。例:

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

class UserAccount{

    function isAccountOk()

    {

        ...

    }

    function addAccount()

    {

        ...

    }}

方法中参数命名

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

class UserAccount{

    function isAccountOk( $account_name )

    {

        $this->account_name = $account_name;

        ...

    }

类属性命名

使用英文名词、动词,以下划线作为单词的分隔,字母均使用小写,对于类属性为某个对象变量,则以字符串object为后缀,例:

class UserAccount{

    function IsAccountOk()

    {

        ...

    }

    function AddAccount()

    {

        ...

    }

    public $table_name      = '';

    public $database_object = '';}

三、语法书写篇

大括号{}规则

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

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{

    ...}

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

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

使用完毕后的数组变量、对象变量、查询集合必须马上使用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;

    ...}

六、数据库应用篇

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

数据库名称应该由概述项目内容的小写英文名词组成。

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

数据表和字段采用小写单词加下划线方式命名,例如 think_user 表和 user_name字段。

表名加前缀,字段名不加前缀,主键以"表名_id"形式命名,

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

数据表的字段应避免使用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中首尾加单引号就行,甭怕错。

 

文章版权声明:除非注明,否则均为先生博客原创文章,转载或复制请以超链接形式并注明出处。

发表评论

表情:
评论列表 (暂无评论,418人围观)

还没有评论,来说两句吧...

取消
微信二维码
微信二维码
支付宝二维码