资讯专栏INFORMATION COLUMN

PHP 规范说明与工具

snowLu / 461人阅读

摘要:今天这篇分享将简单地梳理一下规范,并介绍一个代码检查工具,结合以及进行实践。目前流行的一些规范是的简写,由组织制定的规范,是开发的实践标准。目前已表决通过了套标准,已经得到大部分框架的支持和认可。

> 作为一个新手,写出规范的代码也是一门必修课,除了阅读相应的代码规范文档之外,充分利用相关的工具能使得进阶之路事半功倍。今天这篇分享将简单地梳理一下 PHP 规范,并介绍一个代码检查工具 Code Sniffer,结合 PHPStorm 以及 GIT 进行实践。

PHP 规范

为什么需要统一代码规范?

PHP 社区百花齐放,拥有大量的函数库、框架和组件。PHP 开发者通常会在自己的项目中使用若干个外部库,因此 PHP 代码遵循(尽可能接近)同一个代码风格就非常重要,这让开发者可以轻松地将多个代码库整合到自己的项目中。

目前流行的一些规范:

PSR

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

PHP FIG,FIG 是 Framework Interoperability Group(框架可互用性小组)的缩写,由几位开源框架的开发者成立于 2009 年,从那开始也选取了很多其他成员进来(包括但不限于 Laravel, Joomla, Drupal, Composer, Phalcon, Slim, Symfony, Zend Framework 等),虽然不是「官方」组织,但也代表了大部分的 PHP 社区。

项目的目的在于:通过框架作者或者框架的代表之间讨论,以最低程度的限制,制定一个协作标准,各个框架遵循统一的编码规范,避免各家自行发展的风格阻碍了 PHP 的发展,解决这个程序设计师由来已久的困扰。

目前已表决通过了 6 套标准,已经得到大部分 PHP 框架的支持和认可。

详细介绍请参考官方说明:

中文文档

官方网站

PEAR

The PEAR Coding Standards apply to code that is part of the official PEAR distribution. Coding standards often abbreviated as CS among developers and they aim to keep code consistent to be easily readable and maintainable by most of PEAR folks.

参考官方说明

Zend

Zend Framework 使用的代码规范。

参考官方说明

Code Sniffer

官方网站:https://github.com/squizlabs/PHP_CodeSniffer

PHP_CodeSniffer is a set of two PHP scripts; the main phpcs script that tokenizes PHP, JavaScript and CSS files to detect violations of a defined coding standard, and a second phpcbf script to automatically correct coding standard violations. PHP_CodeSniffer is an essential development tool that ensures your code remains clean and consistent.

简单来说,就是两个小工具,

phpcs (PHP Code Standard),用来检查代码规范

phpcbf (PHP Code Beautifier and Fixer),用来自动修复代码

安装 Code Sniffer

参考官方文档

使用 Code Sniffer

执行 phpcs 检查代码规范

$ phpcs /path/to/code/myfile.php

FILE: /path/to/code/myfile.php
--------------------------------------------------------------------------------
FOUND 5 ERRORS AFFECTING 4 LINES
--------------------------------------------------------------------------------
 2 | ERROR | [ ] Missing file doc comment
 3 | ERROR | [x] TRUE, FALSE and NULL must be lowercase; expected "false" but
   |       |     found "FALSE"
 5 | ERROR | [x] Line indented incorrectly; expected at least 4 spaces, found 1
 8 | ERROR | [ ] Missing function doc comment
 8 | ERROR | [ ] Opening brace should be on a new line
--------------------------------------------------------------------------------
PHPCBF CAN FIX THE 2 MARKED SNIFF VIOLATIONS AUTOMATICALLY
--------------------------------------------------------------------------------

Code-Sniffer 默认使用 PEAR 代码规范。可以使用 --standard=xxx 指定。

$ phpcs --standard=PSR2 /path/to/code/myfile.php

或者修改默认配置

$ phpcs --config-set default_standard Squiz

执行 phpcbs 修复代码

$ phpcbf /path/to/code
Processing init.php [PHP => 7875 tokens in 960 lines]... DONE in 274ms (12 fixable violations)
    => Fixing file: 0/12 violations remaining [made 3 passes]... DONE in 412ms
Processing config.php [PHP => 8009 tokens in 957 lines]... DONE in 421ms (155 fixable violations)
    => Fixing file: 0/155 violations remaining [made 7 passes]... DONE in 937ms
Patched 2 files
Time: 2.55 secs, Memory: 25.00Mb

更多功能,参考官方文档

与 PHP Storm 集成

将 Code Sniffer 与 PHP Storm 集成,可以使 IDE 实时显示代码的规范情况,提醒开发人员修改代码,长期使用,可以让开发人员养成非常规范的代码习惯。

如何配置?

为 PHPStorm 配置 Code Sniffer 路径:

![code-sniffer](http://imgur.com/X4rIc0e.png)
![code-sniffer](http://imgur.com/TdqQVfz.png)

设置 Inspections

选择合适的 Coding Standard
![](http://imgur.com/hLmHbZo.png)

利用 GIT Hook 强制代码检查

使用 GIT 的 Pre-Commit Hook,可以在代码被提交之前,强制调用 Code Sniffer 进行代码检查,如果不符合规范,将阻止用户提交代码。

在项目的 .git/hooks 建立 pre-commit 文件

写入代码:

[Pre-Commit Gist](https://gist.githubusercontent.com/yangzhyo/6dad52e862c5efa368c992efc52e1fb9/raw/dec18f55ddfdf6eeb6d659a19398ec2d106fface/pre-commit.php)

试试看:)

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/25897.html

相关文章

  • 在github规范开发以及持续构建php项目

    摘要:本文目的是通过自己写的一个的简单的库花密密码生成工具,来学习我认为的库开发的一些规范,以及上持续构建你的项目的一些方法。给自己的项目开启持续构建。包发布以及当你的代码完成后,测试完成后。 本文目的是通过自己写的一个php的简单的库(花密密码生成工具), 来学习我认为的php库开发的一些规范,以及github上持续构建你的项目的一些方法。其实是为了显示下边一系列的的徽章 showImg(...

    Sleepy 评论0 收藏0
  • Travis CI 持续集成服务构建 Composer 类库简明教程

    摘要:创建帐号提供的是持续集成服务,简称。在这里引入的原因是我们的项目需要使用服务进行持续集成和测试,当然你也可以替换成别的单元测试工具。创建单元测试用例是单元测试类库家族中的一员,使用的一个主要目的是为我们的模块创建单元测试用例。 本文首发于 Travis CI 持续集成服务构建 Composer 类库简明教程,转载请注明出处! 在项目开发过程中,编码工作只是软件开发整个过程中的一小部分环...

    DoINsiSt 评论0 收藏0
  • 这就是现代php该有的样子(二)

    摘要:所以,是帮助您创建您的项目的测试框架,单元测试。行为驱动开发是一个来自测试驱动开发的开发过程。这种语言被称为,是用来描述被测试的预期的行为。代码将被测试并且没有异常。这些标准提出了现代编码风格。 本文来自medium----原文链接; 欢迎作客我们的php&Laravel学习群:109256050 你需要开始使用测试 这是我每天对自己说的话。像很多人一样,我不会像TDD所建议的那样测试...

    fevin 评论0 收藏0
  • 我的php编码规范

    摘要:为什么我们要培养自己的编码规范我们写代码的时候,一个好的编码规范,对我们来说能够起到很多意向不到的效果。至少会有一下的好处提高我们的编码效率。 为什么我们要培养自己的编码规范? 我们写代码的时候,一个好的编码规范,对我们来说能够起到很多意向不到的效果。至少会有一下的好处:1、提高我们的编码效率。整齐划一的代码方便我们进行复制粘贴嘛!2、提高代码的可读性。3、显示我们专业。别人看到了我们...

    RiverLi 评论0 收藏0
  • PHP 标准规范

    摘要:标准规范简介是的简写,由组织制定的规范,是开发的实践标准。具体标准有有了统一编码风格规范,更有利于查看和学习各个框架或类库,不不需要每次都适应新的编码风格。同时在开发团队内部使用统一的编码规范更有利于代码审查版本控制团队内部交流。 PHP 标准规范 PSR PSR 简介 PSR 是 PHP Standard Recommendations 的简写,由 PHP FIG 组织制定的 PHP...

    FuisonDesign 评论0 收藏0

发表评论

0条评论

snowLu

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<