PHP规范——PSR


参考文档

什么是PSR?

PSR:PSR 是 PHP Standard Recommendations 的简写,由 PHP FIG 组织制定的 PHP 规范,是 PHP 开发的实践标准。

PSR-0: 自动加载规范

PSR-0已经废弃,被PSR-4代替

PSR-1:基础编码规范

  1. PHP代码文件 必须 以 <?php 或 <?= 标签开始
  2. PHP代码文件 必须 以 不带 BOM 的 UTF-8 编码
  3. 类的命名 必须 遵循 StudlyCaps 大写开头的驼峰命名规范
  4. 命名空间以及类 必须 符合 PSR 的自动加载规范
  5. 类中的常量所有字母都 必须 大写,单词间用下划线分隔
  6. 方法名称 必须 符合 camelCase 式的小写开头驼峰命名规范
<?php
	class PeopleActivity{
		protected $contentType = 'application/json';
		public function peopleEating(){

	}
}

PSR-2: 编码风格规范

  1. 代码 必须 遵循 PSR-1 中的编码规范
  2. 代码 必须 使用4个空格符而不是「Tab 键」进行缩进
  3. 每个 namespace 命名空间声明语句和 use 声明语句块后面,必须 插入一个空白行。
  4. 类的开始花括号({) 必须 写在函数声明后自成一行,结束花括号(})也 必须 写在函数主体后自成一行。
  5. 方法的开始花括号({) 必须 写在函数声明后自成一行,结束花括号(})也 必须 写在函数主体后自成一行。
  6. 类的属性和方法 必须 添加访问修饰符(private、protected 以及 public),abstract 以及 final 必须 声明在访问修饰符之前,而 static 必须 声明在访问修饰符之后。
<?php
namespace think\session\driver;
//空一行
use SessionHandler;
use think\Exception;
//空一行
class Redis extends SessionHandler
{	// {另起行
    protected $handler = null;
    protected $config  = [
        'host'         => '127.0.0.1', // redis主机
        'port'         => 6379, // redis端口
        'password'     => '', // 密码
        'select'       => 0, // 操作
    ];

    public function __construct($config = [])
    {	// {另起行
        $this->config = array_merge($this->config, $config);
    }	// }另起行
    

    abstract/final public/protected/private static function bar()
    
	{
		//
	}  
}		// }另起行
    
  1. 每行的字符数 应该 软性保持在 80 个之内,理论上 一定不可 多于 120 个,但 一定不可 有硬性限制。

  2. 控制结构的关键字后 必须 要有一个空格符,而调用方法或函数时则 一定不可

  3. 控制结构的开始花括号(){ 必须 写在声明的同一行,而结束花括号}() 必须 写在主体后自成一行

  4. 控制结构的开始左括号后和结束右括号前,都 一定不可 有空格符。

<?php
	//if关键词后跟空格
	if ($expr1) {
	    // if body
	} elseif ($expr2) {
	    // elseif body
	} else {
	    // else body;
	}
	

	do {
	    // structure body;
	} while ($expr);

PSR-3:日志接口规范

PSR-4:自动加载规范

  1. 此处的「类」泛指所有的「Class类」、「接口」、「traits 可复用代码块」以及其它类似结构。

  2. 一个完整的类名需具有以下结构: <命名空间>(<子命名空间>)*<类名>

  • 完整的类名 必须 要有一个顶级命名空间,被称为 “vendor namespace”;

  • 完整的类名 可以 有一个或多个子命名空间;

  • 完整的类名 必须 有一个最终的类名;

  • 完整的类名中任意一部分中的下滑线都是没有特殊含义的;

  • 完整的类名 可以 由任意大小写字母组成;

  • 所有类名都 必须 是大小写敏感的。

  1. 当根据完整的类名载入相应的文件
  • 完整的类名中,去掉最前面的命名空间分隔符,前面连续的一个或多个命名空间和子命名空间,作为「命名空间前缀」,其必须与至少一个「文件基目录」相对应;

  • 紧接命名空间前缀后的子命名空间 必须 与相应的「文件基目录」相匹配,其中的命名空间分隔符将作为目录分隔符。

  • 末尾的类名 必须 与对应的以 .php 为后缀的文件同名。

  • 自动加载器(autoloader)的实现 一定不可 抛出异常、一定不可 触发任一级别的错误信息以及 不应该 有返回值。

PSR-5:PHPDoc 标准

PSR-6:缓存接口规范

PSR-7:HTTP 消息接口规范

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值