当前位置: 首页 > 后端技术 > PHP

PHP-PSR现代PHPer的开发规范

时间:2023-03-29 22:43:51 PHP

原文在我自己的博客里,小伙伴们也可以点击阅读原文跳转查看,还有好听的背景音乐~PSR是PHPStandards的缩写Recommendation,表示PHP推荐标准。要想了解PSR,首先要知道制定这个标准的人/组织是谁——PHP-FIG。PHP-FIGPHP-FIG全称为PHPFrameworkInteropGroup,是一个组织,其成员由一些PHP框架的代表组成。这些人聚集在一起“讨论框架之间的共性并寻找合作方式”。PHP-FIG制定了PHP框架可以自愿实施的推荐规范,以提高其他框架的交流和共享能力。PHP-FIG的使命是实现框架之间的互操作性。PSR-1:基本代码风格文章一开始我们就简单介绍了什么是PSR,PSR就是PHP标准,而PSR-1是PHP最基本最简单的标准。PHP标签必须将代码放在标签。不要使用其他标记语法。相信很多PHPer都比较容易上手,而在实际代码中,一般都是使用正常的标签编码。所有的PHP文件都必须使用UTF-8字符集编码,不能有字节顺序标记(BOM),也就是没有BOM和有BOM的格式。记得刚开始敲PHP代码的时候,都是学长们照顾的。务必使用IDE将其调整为无BOM格式,我当时一无所知,然后就照做了。既然看到这里,我又查了资料,找到了不能使用BOM格式的原因。BOM会产生多余的输出,就像无缘无故多了一个空行:php在处理BOM表头的时候,有时候会出现错误,可能会导致你在使用header等函数时出现文件已经输出的错误或者session_start,大部分是因为BOM表头发出去了。.因为在PHP看来,它变成了一个空格。所以使用无BOM格式。一个PHP文件可以定义符号(类、特征、函数、常量等),或者执行有副作用的操作(生成结果或处理数据),但不能同时做两件事。这条规定的意思几乎是一样的。它是一个变量、方法或类只能相应地完成一个操作和一件事,保证了代码的清晰性以及方法和变量的单一性,各司其职。其实也是为了方便。以后项目/应用比较大的时候,我们可以解耦自动加载PHP的命名空间和类。它必须符合PSR-4自动加载器标准。跟进看PSR-4的具体解释。类名PHP类名必须使用驼峰式,也称为标题式驼峰式和分词(每个单词用_隔开)。记得之前争议很大。有人支持驼峰式(GirlFriend),也有人支持分词。(girl_friend),没事了,统一规定出来了,为了PHP更好的发展,那支持分词风格的兄弟们就委屈一下了,驼峰统一。记得公司的CI2项目用过这种分词,不过也是框架规定。后来在自己的项目中,有预感用了驼峰命名法,哈哈,有眼光就喜欢~常量PHP常量Names的名字必须大写;这应该是一个明智的选择,因为当我第一次编写它时,它在PHP中根深蒂固。方法名使用驼峰命名法(boyFriend)方法的命名与类的命名有些相似,但还是有一些区别:类的命名要求首字母大写(BoyFriendMoney),而方法的命名要求首字母小写(boyFriendMoney)PSR-2:StrictcodestylePSR-2是比PSR-1更严格的代码规范。个人和官方都认为开发人员应该遵循更严格的代码标准。在现代PHP生态中,统一的风格可以更好地让其他开发者理解PHP代码。在实现PSR-1缩进和使用四空格缩进之前实现PSR-1并使用PSR-2。关于缩进的问题,相信争议很大。在我真正面对这个问题之前,我总是使用IDE的tab键。然后我和同事在写同一个文件的时候,代码的缩进会不一样,导致代码结构很乱。所以出现这个问题后,统一了文件缩进的标准,四个空格作为缩进。这种情况下,即使用不一致的编辑器打开,效果也是一样的。很多IDE都可以设置tab键,百度一下就可以了。文件和代码行PHP文件必须使用UNIX风格的换行符(LF),末尾有一个空行,并且不得使用PHP关闭?>标记。一开始不明白为什么纯PHP页面没有使用closing?>标签。后来,我在书中找到了答案。为了避免意外的输出错误,如果加上了结束标签,并且结束标签后面有一个空行,那么这个空行也被认为是输出,导致错误(比如设置http头的时候)关键字关键字,使用小写;之前不知道从哪看的PHP教程,上面写的PHP代码好像是true,false关键字里面的关键字都是大写的TRUE和FALSE,我一直这样用。后来看了PSR-2规范,才知道应该用小写。累死了~每一个命名空间语句后面都要跟一个空格。好的。同样,在使用use关键字导入命名空间或为命名空间创建别名时,应在一系列类似于:pushHandler(newStreamHandler('logs/development.log',Logger::DEBUG));$logger->pushHandler(newStreamHandler('logs/production.log',Logger::WARNING));//使用记录器$logger->debug('Thisisdebugmessage');$logger->debug('这是警告信息');PSR-4:自动加载器PHP-FIG第四个发布的建议描述了一个标准的自动加载器策略;自动加载器意味着在运行时按需查找PHP类、接口或特征并将其加载到加载器中。自动加载器策略PSR-4建议不需要更改代码的实现方式,只需要更改如何使用文件系统目录结构和PHP名称空间来组织代码。PSR-4依赖于PHP命名空间和文件系统目录结构来查找和加载PHP类、特征和接口。为什么自动加载器很重要?举一个很常见的场景,我们通常会使用require、include等方式导入文件。方法简单可靠,但是如果我们导入一两个还好说,但是当我们在一个项目运行的时候需要导入几十个文件的时候,我们不是要写几十个require或者include吗?这样既不方便也不美观,所以PHP-FIG在此基础上考虑,标准化了一个统一的autoloader策略;如何使用autoloader推荐使用依赖管理器Composer自动生成的PSR-4autoloader。现代的PHP框架,laravel、Yii、TP5等都采用了依赖Composer的autoloader策略,方便我们下载组件和引入合适的类。PSR-ME:制定自己的PHP规范,遵循PSR-1和PSR-2的使用规范。适当和简化的变量、方法和类命名。让人们一目了然地知道他们在做什么尽量编写高内聚低耦合的代码保持代码结构整洁美观现代PHP开发的新特性和良好实践,很好的一本书。PHP-FIG推出的PHP规范并不一定意味着所有PHP开发者都必须遵守。制定本规范的目的是为了让全世界的PHP开发者更容易、更容易地查看代码。制造出来的组件/轮子可以很容易的被所有开发者知道和使用,同时降低我们的工作投入率,让产出大于投入,效率更高更快。

猜你喜欢