PHP-CS-Fixer:格式化你的PHP代码

简介:

简介

良好的代码规范可以提高代码可读性,团队沟通维护成本。最推荐大家遵守的是 php-fig(PHP Framework Interop Group) 组织定义的 PSR-1PSR-2 两个。不了解的同学可以先通过链接点击过去阅读下。

这个工具的作用就是按照 PSR-1PSR-2 的规范格式化你的代码。

安装

PHP需求:PHP最小版本5.3.6。

本地安装
安装很简单,下载php-cs-fixer.phar文件就行了。官方地址是:
http://get.sensiolabs.org/php-cs-fixer.phar

国内的朋友如果下载很慢,可以使用百度云:
链接: http://pan.baidu.com/s/1qWUTd5y 密码: yith

Composer方式安装
如果你还不了解Composer,请点击链接查看。

新建composer.json

{
    "require" :{
        "fabpot/php-cs-fixer":"*"
    },"config": {
        "secure-http": false
    }
}

运行:

composer update

稍等片刻,下载完成:目录生成了vendor文件夹。

设置全局:

export PATH="$PATH:$HOME/.composer/vendor/bin"

注意,composer安装的与本地方式安装后调用的执行文件是不一样的。本地安装执行的是php-cs-fixer.phar;composer安装的执行的是php vendor\fabpot\php-cs-fixer\php-cs-fixer

homebrew安装

$ brew install homebrew/php/php-cs-fixer

如何使用

命令行运行:

php-cs-fixer

会给出很多帮助提示。

使用 fix 指令修复文件夹或文件的代码风格

php php-cs-fixer.phar fix /path/to/dir
php php-cs-fixer.phar fix /path/to/file

选项:

--format 输出文件格式,支持txt、xml
--verbose 
--level 应用哪种PSR类型。支持psr0、psr1、psr2。默认是psr2
--dry-run 显示需要修复但是没有修复的代码
php php-cs-fixer.phar fix /path/to/project --level=psr0
php php-cs-fixer.phar fix /path/to/project --level=psr1
php php-cs-fixer.phar fix /path/to/project --level=psr2
php php-cs-fixer.phar fix /path/to/project --level=symfony

示例:

$ php php-cs-fixer.phar fix test.php

   1) test.php
Fixed all files in 0.290 seconds, 4.250 MB memory used

有一些要注意的地方是,php-cs-fixer 因为是在不破坏相容性的前提下修正的,所以有些 方法命名 的规则就无法修。不过比起手动修正,可以省下不少时间。

更多使用方式参见 Usage

使用.php_cs文件

在一些开源框架中都看到了 .php_cs 文件。这个文件便是php-cs-fixer的格式化配置。

官方是这么描述的:

Instead of using command line options to customize the fixer, you can save the configuration in a .php_cs file in the root directory of your project. 

如何使用.php_cs

$ php php-cs-fixer fix --config-file .php_cs  test.php

Loaded config from ".php_cs"
   1) test.php
Fixed all files in 0.242 seconds, 4.250 MB memory used

使用--config-file加载.php_cs文件。文件内容详情见文末。

升级

php php-cs-fixer.phar self-update

或者

$ sudo php-cs-fixer self-update

composer方式:

$ ./composer.phar global update fabpot/php-cs-fixer

brew方式:

$ brew upgrade php-cs-fixer

StyleCI介绍

当我们使用 PHP-CS-Fixer 让我们现有的代码规范化之后,我们怎么确保以后开发的代码,以及别人 pr 的代码都能正确的符合代码风格规范呢?

StyleCI 是一个 Laravel5 项目,功能实现也是由 PHP-CS-Fixer 驱动。

它可以自己分析你项目的 pull request,并且在你 merge 前显示出分析的结果。

该工具没有具体使用过,下面是它的官网,感兴趣的同学可以看看。

官方网站:https://styleci.io/

相关资源

PHP Coding Standards Fixer--FriendsOfPHP
https://github.com/FriendsOfPHP/PHP-CS-Fixer

使用 PHP-CS-Fixer 自动规范化你的 PHP 代码_PHPHub - PHP & Laravel的中文社区
https://phphub.org/topics/547

现在写 PHP,你应该知道这些 - Scholer 的 PHP 之路 - SegmentFault
https://segmentfault.com/a/1190000003844380

Basic php-cs-fixer rules
https://github.com/XiaoLer/php-develop-standards/blob/master/php-cs-fixer-rules.md

.php_cs内容参考

<?php

$header = <<<EOF
This file is part of the PHP CS utility.

(c) Fabien Potencier <fabien@symfony.com>

This source file is subject to the MIT license that is bundled
with this source code in the file LICENSE.
EOF;

Symfony\CS\Fixer\Contrib\HeaderCommentFixer::setHeader($header);

return Symfony\CS\Config\Config::create()
    // use default SYMFONY_LEVEL and extra fixers:
    ->fixers(array(
        'header_comment',
        'long_array_syntax',
        'ordered_use',
        'php_unit_construct',
        'php_unit_strict',
        'strict',
        'strict_param',
    ))
    ->finder(
        Symfony\CS\Finder\DefaultFinder::create()
            ->exclude('Symfony/CS/Tests/Fixtures')
            ->in(__DIR__)
    )
;
目录
相关文章
|
6天前
|
PHP 开发者
PHP中的命名空间:优雅解决代码冲突与组织结构
在PHP开发中,命名空间是一种重要的工具,可以帮助开发者避免代码冲突、提高代码组织结构和可读性。本文将深入探讨PHP中命名空间的概念、使用方法以及实际应用场景,帮助读者更好地理解和运用命名空间来优化他们的PHP代码。
拿php写个原生增删改查案例出来(提供全部代码+sql)
拿php写个原生增删改查案例出来(提供全部代码+sql)
拿php写个原生增删改查案例出来(提供全部代码+sql)
|
6天前
|
PHP 开发者
【专栏】介绍PHP的命名空间,它是一个用于封装代码、避免名称冲突的机制
【4月更文挑战第27天】本文介绍了PHP的命名空间,它是一个用于封装代码、避免名称冲突的机制。命名空间的作用包括:防止大型项目中的命名冲突,提升代码可读性和可维护性,以及方便代码重用。文章详细阐述了如何定义、导入命名空间,使用完全限定名称以及设置命名空间别名。通过实例展示了命名空间在项目模块划分和第三方库如Laravel中的应用,强调了命名空间在组织和管理PHP代码中的关键作用。
|
6天前
|
PHP
利用一段代码轻松绕过PHP授权系统
利用一段代码轻松绕过PHP授权系统
12 0
|
6天前
|
安全 PHP 开发工具
php代码加密 php-screw-plus
php代码加密 php-screw-plus
41 0
|
6天前
|
算法 PHP 数据安全/隐私保护
【实战】PHP代码逆向工具,轻松还原goto加密语句的神器!
`goto解密工具`是一款针对PHP的在线神器,能有效解密和还原goto加密代码,提升代码可读性和可维护性。支持单文件及50M压缩包一键解密,提供全效解决方案。通过实际案例展示了解密报错和理解复杂代码的能力,是PHP开发者解决goto难题的得力助手。立即体验:[在线PHP解密大师](https://copy.kaidala.com/dala/goto/index.html)。
31 1
|
6天前
|
算法 PHP 数据安全/隐私保护
【必备工具】解密PHP超强在线工具,一键goto代码解密
goto解密工具,php开发者的福音,能有效解密复杂的goto加密代码,提升代码可读性和可维护性。支持单文件及项目目录一键解密,最大处理50M压缩文件。通过具体案例展示其在解决报错和理解复杂开源项目中的强大功能。立即体验:https://copy.kaidala.com/dala/goto/index.html
66 0
|
6天前
|
PHP 开发者 UED
PHP 中的异常处理:提高代码健壮性的关键
【2月更文挑战第28天】在 PHP 开发中,异常处理是确保应用程序稳定性和可靠性的重要环节。本文将深入探讨 PHP 异常的概念、类型及其处理机制,并通过实例演示如何有效地捕获和处理异常,以增强代码的健壮性和用户体验。