mmoreram/php-formatter

此包已被废弃且不再维护。未建议替代包。

PHP 自定义格式化工具

v1.3.3 2017-12-04 14:18 UTC

This package is auto-updated.

Last update: 2022-03-01 00:05:41 UTC


README

Build Status

此PHP格式化工具旨在为您PHP项目提供一些批量操作,以确保其一致性。它们都不修复PSR规则。如果您想修复PSR规则,请检查friendsofphp/php-cs-fixer

安装

以这种方式安装PHP格式化工具

$ composer global require mmoreram/php-formatter=dev-master

如果您是第一次全局安装依赖项,请确保将 ~/.composer/vendor/bin 添加到 $PATH,如下所示这里

始终保持PHP格式化工具安装的最新状态

$ composer global update mmoreram/php-formatter

.phar文件

您还可以使用最新构建的.phar

$ git clone [email protected]:mmoreram/php-formatter.git
$ cd php-formatter
$ php build/php-formatter.phar

您可以将.phar文件作为全局脚本复制

$ cp build/php-formatter.phar /usr/local/bin/php-formatter

编译

最后,您也可以编译自己的包版本。(您需要在php.ini中设置phar.readonly = Off)。为此包的编译,您需要box-project/box2库。

$ git clone [email protected]:mmoreram/php-formatter.git
$ cd php-formatter
$ composer update --no-dev
$ box build -v
$ build/php-formatter.phar

您可以将.phar文件作为全局脚本复制

$ cp build/php-formatter.phar /usr/local/bin/php-formatter

配置

您可以在项目的根目录放置一个名为.formatter.yml的文件。在每次命令执行中,这将定义优先级。

如果命令中设置了选项,则使用该选项。如果没有设置,如果在一个找到的配置文件中定义了,则使用该选项。否则,将使用默认值。

这是配置参考

use-sort:
    group:
        - _main
        - Mmoreram
    group-type: each
    sort-type: alph
    sort-direction: asc

strict: ~
header: |
    /*
     * This file is part of the php-formatter package
     *
     * Copyright (c) 2014 Marc Morera
     *
     * For the full copyright and license information, please view the LICENSE
     * file that was distributed with this source code.
     *
     * Feel free to edit as you please, and have fun.
     *
     * @author Marc Morera <[email protected]>
     */

您还可以使用--config|-c选项定义搜索.formatter.yml文件的位置

$ php-formatter formatter:use:sort src/ --config="src/"

命令

PHP格式化工具是一套针对您的PHP项目有用的命令。它们不考虑任何类型的通用编码标准,如PSR-0或PSR-1,更像是开发人员和审查员的一种实用工作方式。

Console Tool

Usage:
  [options] command [arguments]

Options:
  --help           -h Display this help message.
  --quiet          -q Do not output any message.
  --verbose        -v|vv|vvv Increase the verbosity of messages
  --version        -V Display this application version.
  --ansi              Force ANSI output.
  --no-ansi           Disable ANSI output.
  --no-interaction -n Do not ask any interactive question.

Available commands:
  help                   Displays help for a command
  list                   Lists commands
formatter
  formatter:header:fix  Ensures that all PHP files has header defined in config file
  formatter:strict:fix  Ensures that all PHP files have strict mode defined in config file. Only valid for >=PHP7.0
  formatter:use:sort    Sort Use statements

排序所有Use语句

您可以根据不同的方式排序您的Use语句。对于此命令,您必须提供要处理的PHP文件所在的路径作为参数。

  • 命令:php-formatter formatter:use:sort
  • 参数:路径
  • 选项:--exclude [多次]
  • 选项:--group [多次]
  • 选项:--group-type=一个|每个
  • 选项:--sort-type=alpha|length
  • 选项:--sort-direction=asc|desc
  • 选项:--dry-run [无值]

分组

您可以使用任意数量的组来对Use语句进行排序(--group)。这意味着您可以将具有相同根(Symfony\)的行按特定顺序分组。

常见的组名为_main,如果没有指定,则放置在开头。您可以使用--group选项定义放置此组的位置

$ php-formatter formatter:use:sort src/ --group="Mmoreram" --group="_main" --group="Symfony"

此命令将按如下方式排序代码

use Mmoreram\MyClass;
use Mmoreram\MySecondClass;

use OneBundle\OneClass;
use AnotherBundle\AnotherClass;

use Symfony\OneClass;
use Symfony\AnotherClass;

如您所见,组之间有一个空行。如果定义了任何组,则将创建一个包含所有命名空间的组。

当使用.formatter.yml时,您还可以通过输入数组来指定子组

use-sort:
    group:
        - [Symfony\Component\HttpKernel, Symfony]
        - _main

这将创建一个Symfony组,将所有Symfony\Component\HttpKernel类放置在顶部。

最后,--group-type定义了您是否希望每个命名空间行都有一个use文本

$ php-formatter formatter:use:sort src/ --group="Mmoreram" --group-type="each"

此命令将按如下方式排序代码

use AnotherBundle\AnotherClass;
use OneBundle\OneClass;
use Symfony\AnotherClass;
use Symfony\OneClass;

use Mmoreram\MyClass;
use Mmoreram\MySecondClass;

或者是否只希望为所有组使用一个use。

$ php-formatter formatter:use:sort src/ --group="Mmoreram" --group-type="one"

此命令将按如下方式排序代码

use AnotherBundle\AnotherClass,
    OneBundle\OneClass,
    Symfony\AnotherClass,
    Symfony\OneClass;

use Mmoreram\MyClass,
    Mmoreram\MySecondClass;

排序

有两种排序选项。您可以将命名空间按字母顺序排序(默认值

$ php-formatter formatter:use:sort src/ --sort-type="alph"

此命令将按如下方式排序代码

use AnotherBundle\AnotherClass;
use Mmoreram\MyClass;
use Mmoreram\MySecondClass;
use OneBundle\OneClass;
use Symfony\AnotherClass;
use Symfony\OneClass;

或按长度排序(长度相同的两个命名空间将按字母顺序排序)

$ php-formatter formatter:use:sort src/ --sort-type="length"

此命令将按如下方式排序代码

use AnotherBundle\AnotherClass;
use Mmoreram\MySecondClass;
use Symfony\AnotherClass;
use OneBundle\OneClass;
use Mmoreram\MyClass;
use Symfony\OneClass;

您还可以定义排序的方向。这可以是升序(默认值

$ php-formatter formatter:use:sort src/ --sort-direction="asc"

此命令将按如下方式排序代码

use AnotherBundle\AnotherClass;
use Mmoreram\MyClass;
use Mmoreram\MySecondClass;
use OneBundle\OneClass;
use Symfony\AnotherClass;
use Symfony\OneClass;

或降序

$ php-formatter formatter:use:sort src/ --sort-direction="desc"

此命令将按如下方式排序代码

use Symfony\OneClass;
use Symfony\AnotherClass;
use OneBundle\OneClass;
use Mmoreram\MySecondClass;
use Mmoreram\MyClass;
use AnotherBundle\AnotherClass;

修复所有PHP头文件

您可以在您的.formatter.yml文件中定义您的PHP头文件,并且此命令将检查并修复所有PHP文件是否正确地具有它。

  • 命令:php-formatter formatter:header:fix
  • 参数:路径
  • 选项:--exclude [多次]
  • 选项:--dry-run [无值]

修复所有严格声明

在您的>=7.0 PHP应用程序中,您可以在方法中使用简单类型声明。您可以通过在文件中声明strict_mode变量来将您的应用程序定义得尽可能宽松。每个PHP文件都必须自行配置,因此为了确保所有文件在存在头部定义后,在命名空间声明之前有定义,您可以使用此命令。

  • 命令:php-formatter formatter:strict:fix
  • 参数:路径
  • 选项:--exclude [多次]
  • 选项:--dry-run [无值]

这里可以有三种值。如果您定义了一个布尔值,那么每个找到的文件都将有给定的布尔值声明。

strict: true

否则,如果定义了一个'~'值,则您的声明行将被删除。

strict: '~'

排除文件夹/文件

您可以使用多选--exclude根据需要多次排除文件夹和文件。此选项与Symfony组件Finder的工作方式相同,因此为了确保您正确理解此选项的工作方式,请查阅文档。

$ php-formatter formatter:header:fix src/ --exclude="vendor"

在这种情况下,可能最常用的方式是排除所有供应商从您的过程中。

试运行

您可以使用此工具仅用于测试将要修改的文件,使用选项--dry-run

$ php-formatter formatter:use:sort src/ --dry-run

只要您定义了此选项,此库中的任何命令都不会对您的代码有任何影响。