总述,共0-18 个规范
第一部分: 废弃或未通过的
包括 PSR 0, PSR 5, PSR 8, PSR 9, PSR 10, PSR 14
第二部分: 关于编码风格
包括 PSR 1, PSR 2, PSR 4, PSR 12 . 一定要一起看.
这里的风格要求, 只要你使用了合适的代码编辑器,比如PHPStorm, 有自动代码格式化功能,就都可以. 如果你还在用记事本写代码,那么 我可以给你立个墓碑了.
开发人员要养成 保存前自动格式化的习惯. 或者让编辑器自动进行格式化工作. PHPStorm中包含的SVN就有这个选项:提交前自动格式化.
还有一点要注意, PSR2中要求文件最后有一个空行, 但这个要求在后面的规范中被否定了. ~~~~ 我学习这个规范时,学到这一步时,费了很大的力气把我的PHP文件都加了一个空行~~~~~~
TAB与四个空格 , 这个编辑器可以自行处理. PHPStorm 按下TAB,会自动用空格对齐. 所以放心大胆的按TAB吧. 这个快啊.
原来我的类命名是用的自有规则 C开头的是控制器,M开头的是模型,....
现在按规范改过来了, 把自己的自动加载方法也删除了, 全用了 PSR规范中的自动加载. 还是很方便的.
命名空间,这个东西还真是有必要的. 因为好名字都被系统函数/系统类给占用了. 我也想用啊.
所以,我给自己的框架起了个命名空间 \icePHP , 然后我认为我应该有 框架核心类,还有一些不太重要的扩展类, 我又创建了两个二级命名空间 \icePHP\Frame , icePHP\Enhance, 然后是三级命名空间,....
强制类型约束 declare(strict_types=1);
这个东西也真心好. 我也希望大家给所有的变量加上类型, 代码在敲出来前,应该先成型于脑海中. 同样,变量在使用前,应该先有一个类型.
参数类型与返回值类型
我在我的代码中尽量指明, 但实际上,有些遗留代码 会允许一个变量可能是多种类型, 这个很不方便.
变量如果有了类型,尤其是对象 , 那么 编辑器就可以自动列出可使用的属性与方法. 这个不仅让我们少敲代码,而且还减少出错机会.
说到类型,我就要说一下容器. 个人是极为反对使用容器的, 用容器中 取回的 对象 是什么类型??? 容器这东西对 代码自动 提示, 代码跟踪, 造成极大的困扰. 简直是反人类.
第三部分 日志 及缓存
日志对应PSR3 ,实现很简单, 只要扩展一下AbstractLogger类,并实现log方法即可. 也可以使用第三方的日志库. 我用了自己的库, 主要是写到文件里,以后可以扩展 发微信 或者 打电话.
缓存对应PSR 6 和 PSR 16 , 其中16是个简化版, 6的实现很费劲, 我在开发过程中遇到很多问题, 其中一些问题想出了解决方案,还有一些问题找不到解决方法,如: 多个应用实例之间的缓存信息一致性问题; 查看已有缓存项等. 然后我去查看了 别人的实现 代码, 发现 我能解决的,别人也解决了,方法也雷同, 我解决不了的,别人也解决不了. 最后我决定 放弃自己的实现 方案, 挑选了 Symfony的类库.
第四部分 其它
HTTP 消息 的发送与处理,这对应PSR 7, PSR 13 和PSR 15, PSR 17, PSR 18. 我采用了第三方类库 , sunrise 的.
至于 容器,我个人暂不打算在框架中应用,就没理会.