PHP 文件格式

1、对于只包含有 PHP 代码的文件,结束标志("?>")是不允许存在的,PHP自身不需要("?>"), 这样做, 可以防止它的末尾的被意外地注入空白字符。

2、缩进四个空格(4位),可调整IDE的tab设置为四个空格。

3、行结束标志遵循 Unix 文本文件的约定,行必需以单个换行符(LF)结束。不要使用 苹果操作系统的回车(CR)或 Windows 电脑的回车换行组合如(CR,LF)。

4、文件编码 请调整您的编辑器文件编码为UTF-8,并关闭UTF-8 BOM的功能。请不要使用windows自带的记事本编辑项目文件。

第一章 命名约定

命名应遵循下列原则:

尽量使用完整单词或词组,或意义明确的简称

1.1 类命名

类名采用小写字母,目录按下划线分割。

文件名全小写,不许中文,不能数字开头。

1.2 函数和方法

函数名与方法名是以小写字母,下划线区分。(函数名是指框架中加载的公共函数,方法是指类中的方法) 在对象中的方法,声明为 "private" 或 "protected" 的, 名称的首字符必须是一个单个的下划线,这是唯一的下划线在方法名字中的地方。声明为 "public" 的从不包含下划线。 对于面向对象编程,实例或静态变量的访问器总是以 "get" 或 "set" 为前缀。在设计模式实现方面,如单态模式(singleton)或工厂模式(factory), 方法的名字应当包含模式的名字,这样名字更能描述整个行为。注:单态模式一般为 Class::getInstance();工厂模式一般为Widget::factory();

1.3 变量

全小写变量可以使用 "_" 分割。如:楼盘信息 $house_info 声明为 "private"或 "protected" 的 的实例变量名必须以一个单个下划线开头。 避免在Smarty模板中使用$_GET等全局变量(global)禁止:{$smarty.get.page},需要php过滤以后才可以输出到模板。 特殊字符输出转义,入库不转。

1.4 常量

常量名的所有字母必须大写,下划线分割。

第二章 编码风格

2.1 PHP 代码划分

PHP 代码总是用完整的标准的 PHP 标签定界,不允许使用短标签<? ?>,只包含 PHP 代码的文件,不要结束标签

<?php

2.2 字符串

2.2.1 字符串文字

当字符串是文字(不包含变量),应当用单引号来括起来。

$string = 'Example String';

2.2.2 包含单引号(')的字符串文字

当文字字符串包含单引号就用双引号括起来,特别在 SQL 语句中使用。

$sql = "select  `id`, `name` from `people` where `name`='Fred' or  `name`='Susan'";

2.2.3 变量替换

双引号中的变量用{}括起来。

$greeting = "Hello {$name}, welcome back!";

2.2.4 字符串连接

字符串必需用 "." 操作符连接,在它的前后加上空格以提高可读性,当用 "." 操作符连接字符串,鼓励把代码可以分成多个行,也是为提高可读性。

$company = 'Zend' . ' ' . 'Technologies';

$sql = "select  `id`, `name`  from `people` "

. "where `name` = 'Susan' "

. "order by `name` ASC ";

2.3 数组

2.3.1 关联数组

当用声明关联数组,array 我们鼓励把代码分成多行,在每个连续行的开头用TAB填补来对齐键和值。

$sample_array = array(

'first_key' => 'firstValue',

'second_key' => 'secondValue'

);

2.4 类

2.4.1 类的声明

用类的的命名规则来命名类。花括号应当从类名下一行,开始类中所有代码必需用四个空格缩进类中所有代码。

class sample_class

{

// 类的所有内容

// 必需缩进四个空格

}

2.5 类成员变量

用变量的的命名规则来命名类成员变量。变量的声明必须在类的顶部,在方法的上方声明。 不允许使用 var,要用 private、 protected 或 public声明它们的可见性。

2.6 函数和方法

2.6.1 函数和方法声明

用函数名命名规则来命名函数和方法。在类中的函数必须用 private、 protected 或 public 声明它们的可见性。象类一样,花括号从函数名的下一行开始。函数名和括参数的圆括号中间没有空格。强烈反对使用全局函数。 下面是可接受的在类中的函数声明的例子:

正确示例:

class foo

{

public function bar()

{

// 函数的所有内容

// 必需缩进四个空格

}

}

错误示例:

class foo

{

public function bar(&$baz)

{

// 函数的所有内容

// 必需缩进四个空格

}

}

注:调用时严格禁止引用传递 返回值不能在圆括号中,这妨碍可读性而且如果将来方法被修改成传址方式,代码会有问题。

class foo

{

//正确示例

public function bar()

{

return $this->bar;

}

//错误示例:

public function bar()

{

return($this->bar);

}

}

2.6.2 函数和方法的用法

函数的参数应当用逗号加空格如(, )。传址方式在调用的时候是严格禁止的,参见函数的声明一节如何正确使用函数的传址方式。带有数组参数的函数,函数的调用可包括 "array" 提示并可以分成多行来提高可读性,同时,书写数组的标准仍然适用。

three_arguments(1, 2, 3);

three_arguments(array(1, 2, 3), 2, 3);

three_arguments(array(

1, 2, 3, 'Zend', 'Studio',

$a, $b, $c,

56.44, $d, 500

), 2, 3);

2.8 控制语句

2.8.1 if/else/elseif

使用 if and elseif 的控制语句在条件语句的圆括号左对齐

if ($a != 2)

{

$a = 2;

}

else

{

$a = 7;

}

2.8.2 Switch

在 "switch" 结构里的控制语句在条件语句的圆括号左对齐。"switch" 里的代码必须有四个空格缩进,在"case"里的代码再缩进四个空格。 switch 语句应当有 default。

switch ($numPeople)

{

case 1:

break;

case 2:

break;

default:

break;

}

2.9 注释文档

2.9.1 格式

所有文档块 ("docblocks") 必须和 phpDocumentor 格式兼容,phpDocumentor 格式的描述超出了本文档的范围,关于它的详情,参考: http://phpdoc.org/

2.9.2 文件

php文件 头部注释

<?php

/**

* 新房楼盘库底层数据类

*

* @author xxx <xxx@leju.com>

*/

2.9.3 类

/**

* 类的简述。

*

* 类的详细描述 (如果有的话)... ...

*

* @author     xxx <xxx@leju.com>

*/

class fw_module_gather

{

2.9.4 函数(方法,接口)注释

每个函数,包括对象方法,必须有最少包含下列内容: 函数的描述 所有参数 所有可能的返回值

/**

* 获取一行数据

*

* @param array $condition 查询条件数组

* @param string $field 数据库查询字段数据,默认是全部字段

* @return array

*/

public function fetchRow($condition = '', $field = '*')

{

$test = array();

return $test;

}

2.9.5 程序行间注释

行间注释采用双斜线注释法

//根据城市中文名称,搜索城市详细信息

$city_res = $this->_module_city->search_city($city);

SVN提交说明

SVN提交代码必须加入相关说明文字

SVN提交代码必须填写与本次提交相关的说明文字,不能简单的填写“1.0”、“修复bug”、“上线”之类的说明,必须说明具体添加什么功能,修复具体的问题等,可参考以下SVN提交场景。

SVN提交相关场景

添加功能:

1、添加微信用户群发功能

2、微信用户语音识别功能上线

3、增加E金券在线支付功能

4、微信触屏版增加置业顾问列表页面

修改功能:

1、修改触屏版切换城市功能

2、修改微信后台管理员内容权限功能

3、修改客户消息即时回复功能

修复BUG:

1、修复触屏版首页城市定位不准确问题

2、修复微信用户昵称为空bug

3、修复微信用户分组未同步问题

4、修复微信触屏版看房团页面空白问题

增加文件

1、添加微信操作类库文件

2、添加微博SDK文件

3、添加PHPExcel插件

以上列出的是一些实用场景,提交代码时可参考根据实际代码情况填写说明

php编码规范的更多相关文章

  1. Android的编码规范

    一.Android编码规范 1.学会使用string.xml文件 在我看来,当一个文本信息出现的次数大于一次的时候就必须要使用string.xml 比如一个保存按钮 , 不规范写法: <Butt ...

  2. PHP 高级编程(1/5) - 编码规范及文档编写

    PHP 高级程序设计学习笔记20140612 软件开发中的一个重要环节就是文档编写.他可以帮助未来的程序维护人员和使用者理解你在开发时的思路.也便于日后重新查看代码时不至于无从下手.文档还有一个重要的 ...

  3. 【原】JAVA SE编码规范

    /* * 编码规范: * 1.所有的命名遵循"见名知意"的原则 * 2.所有的命名不允许使用汉字或拼音 * 3.Java的工程命名建议使用小写,比如:oa.crm.cms... * ...

  4. 浅谈Android编码规范及命名规范

    前言: 目前工作负责两个医疗APP项目的开发,同时使用LeanCloud进行云端配合开发,完全单挑. 现大框架已经完成,正在进行细节模块上的开发 抽空总结一下Android项目的开发规范:1.编码规范 ...

  5. PHP编码规范PSR-2

    .note-content { font-family: "Helvetica Neue", Arial, "Hiragino Sans GB", STHeit ...

  6. Objective-C开发编码规范【转载】

    概要 Objective-C是一门面向对象的动态编程语言,主要用于编写iOS和Mac应用程序.关于Objective-C的编码规范,苹果和谷歌都已经有很好的总结: Apple Coding Guide ...

  7. 前端编码规范之CSS

    "字是门面书是屋",我们不会去手写代码,但是敲出来的代码要好看.有条理,这还必须得有一点约束~ 团队开发中,每个人的编码风格都不尽相同,有时候可能存在很大的差异,为了便于压缩组件对 ...

  8. 前端编码规范之JavaScript

    上次浅谈了下关于CSS的编码规范,大部分童鞋持赞同意见,仍存在一些童鞋不太理解这些规范的意义. 如果是个人或者小作坊开发,其实这些所谓的编码规范也没啥意思,因为大家写好的代码直接就给扔到网上去了,很少 ...

  9. Java Script 编码规范【转】

    Java Script 编码规范 以下文档大多来自: Google JavaScript 编码规范指南 Idiomatic 风格 参考规范 ECMAScript 5.1 注解版 EcmaScript ...

  10. python编码规范

    python编码规范 文件及目录规范 文件保存为 utf-8 格式. 程序首行必须为编码声明:# -*- coding:utf-8 -*- 文件名全部小写. 代码风格 空格 设置用空格符替换TAB符. ...

随机推荐

  1. [2016.08.09]文本替换专家 v5.2

    软件名称:文本替换专家最新版本:v5.2软件授权:共享软件发布日期:2016.01.18文件大小:650KB操作系统:XP/2003/Win7/Win2008开发人员:胡洪祥版权所有:胡洪祥

  2. 事件驱动之Twsited异步网络框架

    在这之前先了解下什么是事件驱动编程 传统的编程是如下线性模式的: 开始--->代码块A--->代码块B--->代码块C--->代码块D--->......--->结 ...

  3. rake :You have already activated rake 10.1.0

    rake aborted! You have already activated rake 10.1.0, but your Gemfile requires rake 10.0.3. Using b ...

  4. C#读取文件夹大小

    今天需要做一个读取文件夹大小的功能,为了避免遍历文件夹下所有文件并求出总大小,找到如下的好方法: 首先要在项目中引用一个COM组件:Microsoft Scripting Runtime,这个在Ref ...

  5. 多表数据连接 Left join

    一个我写的实例:其中多表连接,一共连接了3个表.使用聚集函数SUM,用到了GROUP BY SELECT a.[UserID],b.[Name],sum (c.[Money]+c.[Bank])as  ...

  6. MySQL concat函数的使用

    MySQL concat函数是MySQL数据库中众多的函数之一,下文将对MySQL concat函数的语法和使用进行说明,供您参考和学习. MySQL concat函数使用方法:CONCAT(str1 ...

  7. VS2010 AppCode文件夹问题

    在Web应用程序中不能通过右键项目-〉”添加“-〉”添加ASP.NET文件夹“方式添加 .因为Web应用程序中App_Code就不存在 .不过可以通过手动的方式创建,添加一个文件夹命名为App_Cod ...

  8. linux下解压大于4G文件提示error: Zip file too big错误的解决办法

    error: Zip file too big (greater than 4294959102 bytes)错误解决办法.zip文件夹大于4GB,在centos下无法正常unzip,需要使用第三方工 ...

  9. PSP(11.24~11.30)

    27号 类别c 内容c 开始时间s 结束e 中断I 净时间T 作业 构建执法.写博客 14:00 14:40 0m 40m 28号 类别c 内容c 开始时间s 结束e 中断I 净时间T java 编码 ...

  10. Java面向对象㈠ -- 封装

    Java的面向对象有三大特征:封装.继承.多态.这里主要对封装进行讲解. 封装可以理解为隐藏一个类的成员变量和成员函数,只对外提供需要提供的成员函数. Java的封装主要通过访问权限控制符:priva ...