学生导师互选系统(php代码规范)
学生导师互选系统(php代码规范)
php编码规范
组名:一不小心就火了
负责项目:学生导师互选系统(安卓端)
编写目的
为了更好的提高团队的的合作效率,保证开发的有效性和合理性,并可最大程度的提高程序代码的可读性和可重复利用性,指定此规范。
- 参考资料
- <<构建之法>>第四章节
- PSR规范
代码风格规范
-
代码必须遵循 PSR-1 中的编码规范 。
-
代码必须使用4个空格符而不是 tab键 进行缩进。
-
每行的字符数应该软性保持在80个之内, 理论上一定不可多于120个, 但一定不能有硬性限制。
-
每个 namespace 命名空间声明语句和 use 声明语句块后面,必须插入一个空白行。
-
类的开始花括号({)必须写在函数声明后自成一行,结束花括号(})也必须写在函数主体后自成一行。
-
方法的开始花括号({)必须写在函数声明后自成一行,结束花括号(})也必须写在函数主体后自成一行。
-
类的属性和方法必须添加访问修饰符(private、protected 以及 public), abstract 以及 final 必须声明在访问修饰符之前,而 static 必须声明在访问修饰符之后。
-
控制结构的关键字后必须要有一个空格符,而调用方法或函数时则一定不能有。
-
控制结构的开始花括号({)必须写在声明的同一行,而结束花括号(})必须写在主体后自成一行。
-
控制结构的开始左括号后和结束右括号前,都一定不能有空格符。
基本代码规范
-
php标签
php代码指定用长标签或者短标签,而不使用其他标签。
-
字符编码
php代码的编码格式指定只使用不带字节顺序标记(BOM)的UTF-8,以便与安卓端和数据库互连减少问题冲突
-
从属效应(副作用)
一份PHP文件中应该要不就只定义新的声明,如类、函数或常量等不产生从属效应的操作,要不就只有会产生从属效应的逻辑操作,但不该同时具有两者。
“从属效应”(side effects)一词的意思是,仅仅通过包含文件,不直接声明类、 函数和常量等,而执行的逻辑操作。
“从属效应”包含却不仅限于:生成输出、直接的
require
或include
、连接外部服务、修改 ini 配置、抛出错误或异常、修改全局或静态变量、读或写文件等。如下范例文件:
<?php
// 声明函数
function foo()
{
// 函数主体部分
}
// 条件声明**不**属于从属效应
if (! function_exists('bar')) {
function bar()
{
// 函数主体部分
}
}
-
命名空间和类
命名空间以及类的命名必须遵循 PSR-0.。
类的命名必须遵循大写开头的驼峰命名规范,如class MyStudent{}。
-
类的常量、属性和方法(包含所有的类、接口和可复用代码块(traits))
-
常量类的常量中所有字母都必须大写,词间以下划线分隔。参考代码
<?php class Foo { const VERSION = '1.0'; const DATE_APPROVED = '2016-10-26'; }
-
类的属性统一采用小写开头的驼峰式命名规则,如:private studentNum
-
方法名称必须符合小写开头的驼峰命名规范,如
<?php class Student { public function getNumber(){ // } }
-
扩展与继承
关键词 extends 和 implements 必须写类名称的同一行,类开始的花括号必须独占一行,结束花括号必须在类主体后独占一行
<?php class ClassName extends ParentClass implements \ArrayAccess, \Countable { // constants, properties, methods }
-
方法及函数调用
方法及函数调用时,方法名或函数名与参数左括号之间一定不能有空格,参数右括号前也 一定不能有空格。每个参数前一定不能有空格,但其后必须有一个空格。
<?php bar(); $foo->bar($arg1); Foo::bar($arg2, $arg3)
-
if 、 elseif 和 else
标准的
if
结构如下代码所示,留意 括号、空格以及花括号的位置,
注意else
和elseif
都与前面的结束花括号在同一行。<?php if ($expr1) { // if body } elseif ($expr2) { // elseif body } else { // else body; }
-
switch 和 case
标准的
switch
结构如下代码所示,留意括号、空格以及花括号的位置。
case
语句必须相对switch
进行一次缩进,而break
语句以及case
内的其它语句都 必须 相对case
进行一次缩进。
如果存在非空的case
直穿语句,主体里必须有类似// no break
的注释。<?php switch ($expr) { case 0: echo 'First case, with a break'; break; case 1: echo 'Second case, which falls through'; // no break case 2: case 3: case 4: echo 'Third case, return instead of break'; return; default: echo 'Default case'; break; }
-
-
注释,每个程序均必须提供必要的注释,书写注释要求规范。程序注释的原则如下:
a. 注释中除了文件头的注释块外,其他地方都不使用//注释,而使用/* */的注释;
b. 注释内容必须写在被注释对象的前面,不写在一行或者后面;- 写在类、方法和属性定义的前面
/** * Super Class * * @package Package Name * @subpackage Subpackage * @category Category * @author Author Name * @link http://example.com */ class SuperClass {
-
对于执行数据库的sql语句操作,尽量不要在函数内写sql语句,而先用变量定义sql语句,然后在执行操作的函数中调用定义的变量
$sql = "SELECT username,password,address,age,postcode FROM test_t "; $sql .= " WHERE username='aaa'"; $res = mysql_query($sql);
-
项目文件的目录结构,延续上一届的做法,不做特别的修改。
-
php项目开发中的程序逻辑结构
对于PHP项目开发,尽量采用OOP的思想开发,尤其在PHP5以后,对于面向对象的开发功能大大提高。在PHP项目中,我们建议将独立的功能模块尽量写成函数调用,对应一整块业务逻辑,我们建议封装成类,既可以提高代码可读性,也可以提高代码重用性。比如,我们通常将对数据库的接口封装成数据库类,有利于平台的移植。重复的代码要做成公共的库。
写在最后
由于主要做的是数据处理部分的代码,就不结合html方面规范进行编写。本文只是做一下可能需要用的方面的
规范,还存在许多不足,在之后的编码过程中会为遇到规范问题进行补充。