我们身边的现代PHP(六)

后面2篇文章将会介绍PHP标准,可能会有点枯燥,不过真的很重要。

标准 PHP-FIG

PHP的框架和组件数量众多,多得让人难以置信。现代的PHP生态系统是个名副其实的大熔炉,有各种各样的代码,帮助我们开发者构建强大的应用。用过老框架的开发者,例如CodeIgniter,会发现一个问题,所有造的轮子只能适用于单个框架,不能与其他代码共享,但是现在不用担心这个问题了,PHP社区已经从中心化框架模型进化成为分布式生态系统了。composer的出现,轮子变成组件,效率高,互操作性好,而且作用专一。

问题来了,如何改进框架内的通信?如何提升效率?答案是:我们需要一个标准

PHP-FIG:PHP Framework Interop Group

PHP-FIG由一些PHP框架代表组成,制定了推荐规范(推荐并非强制性,但是如果你按照这个规范去实现,PHP的生态将会更好,你的代码会变得更加优雅)

PSR是什么?

PSR事PHP Standards Recommendation(PHP推荐标准)的简称,很多小伙伴去公司面试,可能会被问到,你对psr的理解,平时可能也听说过psr-1,psr-2等术语,很多人忙着写业务,没有时间认认真真去了解,其实这些都是PHP-FIG指定的推荐规范。这些规范都是PSR-开头,后面跟着一个数字,目前已经更新到PSR-18了,PSR官网:https://www.php-fig.org/psr/。今天我们会好好聊聊PSR-1,PSR-2,PSR-3这3个规范,下一篇文章会聊到PSR-4这个规范,自动加载,非常重要,其他规范也会简单提及。

PSR-0这个规范是存在的,只是因为PSR-4替代了,下一篇文章会提及。

PSR-1:基本的代码​风格

PHP代码文件必须以 <?php 或 <?= 标签开始;
PHP代码文件必须以 不带BOM的 UTF-8 编码;
PHP代码中应该只定义类、函数、常量等声明,或其他会产生 从属效应 的操作(如:生成文件输出以及修改.ini配置文件等),二者只能选其一;
命名空间以及类必须符合 PSR 的自动加载规范: PSR-4 ;
类的命名必须遵循 StudlyCaps 大写开头的驼峰命名规范;
类中的常量所有字母都必须大写,单词间用下划线分隔;
方法名称必须符合 camelCase 式的小写开头驼峰命名规范;

PSR-1其实在很多框架的编码规范中都有提及,只是你不知道这就是PSR-1,这是一个非常易于遵守的PHP标准,而且基本所有phper都能遵循这个规范,已经成为习惯了。

PSR-2:严格的代码风格

代码必须使用4个空格符而不是 tab键 进行缩进;
每行的字符数应该软性保持在80个之内,理论上一定不可多于120个,但一定不能有硬性限制;
每个 namespace命名空间声明语句和 use 声明语句块后面,必须插入一个空白行;
类的开始花括号( { )必须写在函数声明后自成一行,结束花括号( } )也必须写在函数主体后自成一行;
方法的开始花括号( { )必须写在函数声明后自成一行,结束花括号( } )也必须写在函数主体后自成一行;
类的属性和方法必须添加访问修饰符(private、protected 以及 public), abstract 以及 final 必须声明在访问修饰符之前,而 static 必须声明在访问修饰符之后;
控制结构的关键字后必须要有一个空格符,而调用方法或函数时则一定不能有;
控制结构的开始花括号( { )必须写在声明的同一行,而结束花括号( } )必须写在主体后自成一行;
控制结构的开始左括号后和结束右括号前,都一定不能有空格符。

PSR-2是在PSR-1的基础上,更加进一步定义了PHP的代码风格,对,就是风格,大部分都是格式,对于看代码的人来说,这样的代码更容易阅读和理解,对于写代码的任务来说,更加轻易。Phpstorm可以使用一个插件来满足PSR-2的代码规范,建议小伙伴安装这个插件,来让自己都代码满足PSR-2(满足了PSR-2也等于满足了PSR-1)规范,养成一个好的习惯,这样在比较规范的公司,你的代码审核才能过,楼主亲身经历,不按照PSR-2的规范,代码是审核不过的

PSR-3:日志记录器接口​​​​​​

这次规范是一个接口,对,你没有听错,后面还有HTTP规范接口等,感兴趣的小伙伴可以去了解。

本规范的主要目的,是为了让日志类库以简单通用的方式,通过接收一个 Psr\Log\LoggerInterface 对象,来记录日志信息。
框架以及CMS内容管理系统如有需要,可以对此接口进行扩展,但需遵循本规范,
这才能保证在使用第三方的类库文件时,日志接口仍能正常对接。

这种类型的规范(接口),在组件编写,或者框架编写中,启到统一管理的作用。接口,大家都知道,实现接口的具体类,可能是不同人编写,但是我们只需要知道这个接口每个方法做什么,那么我们无需关心具体类如何实现,直接用,不用看具体实现的方法过程,这样可以大大节约时间,这个日志接口也是一样,方便我们使用者。

monolog/monolog,这个组件就是一个符合PSR-3规范的日志记录器,如果你也按照PSR-3写一个你自己都组件,那么用过monolog/monolog组件的人,不需要关心你具体如何实现,直接按照标准开始使用,这降低了学习成本和时间,但是,还是需要大家都推行使用PSR相关规范。当然,monolog/monolog这个组件已经非常好用,我们基本都用他,也不会去自己再编写,这个规范了解下即可,PSR-1,PSR-2希望各位phper能够去使用,这样PHP的代码质量会更加规范。

 

下一个章节,我们会继续探讨PSR-4这个比较重要的规范,这是对市面主流框架自动加载到实现以及composer的使用相关联的,理解了这个规范,是你走上架构之路的基本。

 

后续会继续更新,感兴趣的小伙伴可以收藏下哟!

欢迎有问题或者项目开发有问题的小伙伴添加微信:wxmm686800,共同成长!不好意思可以邮箱联系:lirui310@aliyun.com

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值