opositatest/php-cs-fixer-config

针对opositatest项目的PHP CS Fixer配置

v2.0 2024-05-08 10:10 UTC

This package is auto-updated.

Last update: 2024-09-23 08:37:59 UTC


README

此仓库包含所有Opositatest PHP项目的通用代码风格配置。

它基于refinery29/php-cs-fixer-config的思路。

安装

composer require --dev opositatest/php-cs-fixer-config

用法

配置

在项目根目录中创建一个名为.php_cs.dist的配置文件,内容如下

<?php

$config = new Opositatest\PhpCsFixerConfig\OpositatestConfig();
$config->getFinder()
    ->in(__DIR__ . "/src")
    ->in(__DIR__ . "/tests");
return $config;

手动执行

要手动执行修复,您必须运行php-cs-fixer(通常位于/vendor/bin/bin

$ ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php

--verbose--diff选项可以用来查看实际做出的更改。为了避免自动应用更改,可以使用--dry-run选项

$ ./vendor/bin/php-cs-fixer fix --config=.php_cs.dist --verbose --diff --dry-run

限制范围

在大型项目中,您第一次运行此工具时可能会得到许多更改,这使得很难发现潜在的问题。该工具使用了Symfony Finder组件,因此您可以使用该组件提供的任何过滤器来限制目录、文件名等。例如

仅应用于特定子目录

$config->getFinder()
    ->in(__DIR__ . "/src/Model");

仅应用于文件名以Controller结尾的PHP文件

$config->getFinder()
    ->in("/src")
    ->name("*Controller.php");

排除目录

$config->getFinder()
    ->in("/src")
    ->exclude("third-party")

pre-commit钩子

可以配置一个pre-commit钩子,在每次提交前自动格式化代码。

运行touch .git/hooks/pre-commit来创建一个新的钩子,使用chmod +x .git/hooks/pre-commit使其可执行,并将以下脚本粘贴到.git/pre-commit

#!/usr/bin/env bash

echo "Running php-cs-fixer..."

CURRENT_DIRECTORY=`pwd`
GIT_HOOKS_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"

PROJECT_DIRECTORY="$GIT_HOOKS_DIR/../.."

cd $PROJECT_DIRECTORY;
PHP_CS_FIXER="vendor/bin/php-cs-fixer"

git status --porcelain | grep -e '^[AM]\(.*\).php$' | cut -c 3- | while read line; do
    ${PHP_CS_FIXER} fix --config=.php_cs --verbose ${line};
    git add "$line";
done

cd $CURRENT_DIRECTORY;
echo "Done."