PHP编码规范

一、基本约定
1、源文件
(1)纯PHP代码源文件只使用 <?php 标签,省略关闭标签 ?> ;
(2)源文件中PHP代码的编码格式必须是无BOM的UTF-8格式;
(3)使用 Unix LF(换行符)作为行结束符;
(4)一个源文件只做一种类型的声明;

2、缩进
使用Tab键来缩进,每个Tab键长度设置为4个空格;

3、行
一行推荐的是最多写120个字符,多于这个字符就应该换行了,一般的编辑器是可以设置的。

4、关键字
PHP的关键字,必须小写,boolean值:true,false,null 也必须小写

5、命名
(1)类名使用大驼峰式(StudlyCaps)写法;
(2)类的方法名使用小驼峰(cameCase)写法;

(3)函数名使用 小写字母 + 下划线 写法,如http_send_post();
(4)变量名 使用小驼峰写法,如 $userName;

6、注释
(1)行注释使用//,// 后面需要加一个空格;

(2)函数注释参数名、属性名、标签的文本上下要对齐;在第一个标签前加一个空行;

7、空格
(1)赋值操作符(=,+= 等)、逻辑操作符(&&,||)、等号操作符(==,!=)、关系运算符(<,>,<=,>=)、按位操作符(&,|,^)、连接符(.) 左右各有一个空格;

(2)if,else,elseif,while,do,switch,for,foreach,try,catch,finally 等 与 紧挨的左括号“(”之间有一个空格;

(3)函数、方法的各个参数之间,逗号(”,”)后面有一个空格;

8、空行
(1)所有{ 紧挨着的下方,一定不是空行;

(2)同级代码的注释(行注释/块注释)前面,必须有一个空行;

(3)各个方法/函数之间有一个空行;

(4)namespace语句、use语句、clase语句之间有一个空行;

(5)如果 return 语句之前只有一行PHP代码,return 语句之前不需要空行;如果 return 语句之前有至少二行PHP代码,return 语句之前加一个空行;

(6)if,while,switch,for,foreach、try 等代码块之间以及与其他代码之间有一个空行;

9、其他
(1)涉及到多个数据表 更新/添加 操作时,最外层要用事务,保证数据库操作的原子性;
(2)Model层,只做简单的数据表的查询;
(3)业务逻辑统一封装到 Service层;
(4)控制器只做URL路由,参数校验,不要当作 业务方法 调用;
(5)控制器层不能出现SQL操作语句,如 ThinkPHP框架的 where()、order() 等模型方法,SQL方法只能出现在 Model层、Service层!

二、代码样式风格
1、命名空间(Namespace) 和 导入(Use)声明

(1)命名空间(namespace)的声明后面必须有一行空行;

(2)所有的导入(use)声明必须放在命名空间(namespace)声明的下面;

(3)一句声明中,必须只有一个导入(use)关键字;

(4)在导入(use)声明代码块后面必须有一行空行,然后才能声明class;

<?php
namespace app\admin\controller;

use app\BaseController;
use app\admin\controller\Common;

class Demo
{
}

2、类(class),属性(property)和方法(method)
(1)继承(extends) 和实现(implement) 必须和 class name 写在一行。
<?php
namespace app\admin\controller;

use app\BaseController;
use app\admin\controller\Common;

class Demo extends BaseController
{
}

(2)属性(property)必须声明其可见性,到底是

public 还是 protected 还是 private,不能省略

<?php
namespace app\admin\controller;

use app\BaseController;
use app\admin\controller\Common;

class Demo extends BaseController
{
public $name = ‘救火队队长’;
protected $age = ’33’;
private $address = ‘中国北京’;
}

(3)方法(method),必须 声明其可见性,到底是

public 还是 protected 还是private,不能省略。如

果有多个参数,第一个参数后紧接“,” ,再加一个

空格,如果参数有默认值,“=”左右各有一个空格

分开

<?php
namespace app\admin\controller;

use app\BaseController;
use app\admin\controller\Common;

class Demo extends BaseController
{
// 参数之间有一个空格。默认参数的“=”左右各有一个空格,) 与 { 之间有一个空格
public function getInfo($name = ”, $age = 0, $gender = 1)
{
// 方法主体部分
}
}

(4)当用到抽象(abstract)和终结(final)来做类声

明时,它们必须放在可见性声明 (public 还是

protected还是private)的前面。而当用到静态

(static)来做类声明时,则必须放在可见性声明的

后面

<?php
namespace app\admin\controller;

use app\BaseController;
use app\admin\controller\Common;

class Demo extends BaseController
{
// final放前面,static放最后
final public static function getInfo($name = ”)
{
// 方法主体部分
}
}

【综合参考示例】
<?php
// +———————————————————————-
// | najing [ 通用后台管理系统 ]
// +———————————————————————-
// | Copyright (c) 2020 http://www.najingquan.com All rights reserved.
// +———————————————————————-
// | Author: 救火队队长
// +———————————————————————-

namespace app\common\Model;

use think\Model;

/**
* 用户表 数据模型
*
* @package common\Model
*/
class UserModel extends Model
{
/**
* @var bool 是否初始化过
*/
protected static $init = false;

/**
* 根据Id 获取用户信息
*
* @param int $userId 用户Id
* @param string $field 显示字段
* @return array
*/
public function getByUserId($userId = 0, $field = ‘*’)
{
if (empty($userId)) {
return array();
}

$where = array(‘id’ => $userId);
$info = $this->field($field)->where($where)->find();

return $info;
}

}

https://mp.weixin.qq.com/s/Lej5TrDMX_fIUAWPsgWgVA

php

微信生态

2020-11-19 13:57:49

成交方法论

日活?

2022-8-17 6:56:00