Dudaevskiy
1/21/2020 - 12:45 PM

Как использовать PHP-CS-Fixer для форматирования кода в ваших проектах

Latest posts: Articles on Christoph’s Blog…

How to use PHP-CS-Fixer to format code in your projects | Christoph's Blog

PHP-CS-Fixer расшифровывается как PHP Coding Standards Fixer. С помощью этого пакета вы можете автоматически исправить или отформатировать ваш PHP-код в соответствии со стандартными настройками (например, PSR-2) или просто следовать некоторым отобранным правилам. Пожалуйста, посетите репозиторий Github для более подробной информации и документации.

Это также может сэкономить много времени и труда, когда вы обновляете свой код PHP до более поздней версии PHP. В WordPress огромное количество тем и плагинов по-прежнему совместимо с PHP 5.2. За это время в PHP-мире многое произошло.

Просто array()создайте визуальную точку зрения, все объявления делают код действительно грязным. Синтаксис короткого массива, представленный в PHP 5.4, выглядит намного лучше.

В одном из моих проектов мне потребовался минимум PHP 5.6. Это означает, что я могу переключиться на синтаксис короткого массива. НО, просматривая все файлы вручную и заменяя каждое array()объявление [] сокращением, займет много времени и неосуществимо.

PHP-CS-Fixer может позаботиться об этом с помощью одной строки кода в командной строке. (Если вы работаете в Windows, это немного больше работы.

Сначала вам нужно установить пакет. Репозиторий Github показывает несколько различных вариантов установки PHP-CS-Fixer. Я решил установить его глобально с помощью Composer.

composer global require friendsofphp/php-cs-fixer

Далее запустите следующий код:

php-cs-fixer fix /path/to/project/ --rules='{"array_syntax": {"syntax": "short"}}'

Если вы работаете в Windows, это не будет работать, и команда вернет ошибку «Путь« {синтаксис: »не читается».

Это потому, что cmd.exe меняет двойные кавычки, и я не нашел способа последовательно избегать двойных кавычек.

Решением для Windows является создание файла конфигурации ( .php_csили .php_cs.dist), который PHP-CS-Fixer будет автоматически читать и выполнять.

Вы можете использовать .php_cs.distв репозитории Github как директива.

Я просто сохранил правило для синтаксиса коротких массивов:

<?php
$header = <<<'EOF'
This file is part of PHP CS Fixer.
(c) Fabien Potencier <fabien@symfony.com>
    Dariusz Rumiński <dariusz.ruminski@gmail.com>
This source file is subject to the MIT license that is bundled
with this source code in the file LICENSE.
EOF;

$finder = PhpCsFixer\Finder::create()
    ->exclude('tests/Fixtures')
    ->in(__DIR__)
;

$config = PhpCsFixer\Config::create()
    ->setRiskyAllowed(true)
    ->setRules([
        'array_syntax' => ['syntax' => 'short'],
    ])
    ->setFinder($finder)
;

return $config;

После того, как вы сохранили файл в корневом каталоге вашего проекта, вы можете запустить PHP-CS-Fixer с командой, php-cs-fixer fix чтобы запустить его через весь проект, или вы можете указать папки, которые вы хотите отформатироватьphp-cs-fixer fix /path/to/project