ely / php-code-style
用于 Ely.by PHP 项目开发的 PHP-CS-Fixer 规则集
1.0.1
2023-07-21 04:12 UTC
Requires
- php: ^7.4 || ^8.0
- erickskrauch/php-cs-fixer-custom-fixers: ^1.0.1
- friendsofphp/php-cs-fixer: ^3.16
- kubawerlos/php-cs-fixer-custom-fixers: ^3.13
- symfony/polyfill-php80: ^1.15
Requires (Dev)
- ergebnis/composer-normalize: ^2.28
README
用于 Ely.by PHP 项目开发的 PHP-CS-Fixer 规则集。适用于 PHP 7.4 及以上版本。
安装
首先,使用 PHP-CS-Fixer 通过 composer 安装 Ely.by PHP-CS-Fixer 规则
composer require --dev friendsofphp/php-cs-fixer ely/php-code-style
然后创建一个包含以下内容的文件 .php-cs-fixer.php
<?php $finder = \PhpCsFixer\Finder::create() ->in(__DIR__); return \Ely\CS\Config::create() ->setFinder($finder);
这样就完成了。你现在可以使用以下命令查找代码风格违规
vendor/bin/php-cs-fixer --diff --dry-run -v fix
然后使用以下命令完全修复它们
vendor/bin/php-cs-fixer fix
配置
您可以将自定义规则集传递给 \Ely\CS\Config::create()
调用。例如,它可以用于验证与 PHP 7.4 兼容的项目
<?php return \Ely\CS\Config::create([ 'trailing_comma_in_multiline' => [ 'elements' => ['arrays', 'arguments'], ], ])->setFinder($finder);
代码风格
我们的代码风格主要基于 PSR-2,同时借鉴了 PSR-12 的一些想法,并进行了一些修改。
示例
此示例包含以下规则的一些示例,以快速概述
<?php declare(strict_types=1); namespace Vendor\Package; use Vendor\Package\SomeNamespace\ClassA; class Foo extends Bar implements FooInterface { use SomeTrait; private const SAMPLE_1 = 123; private const SAMPLE_2 = 321; public $field1; public Typed $field2; public function sampleFunction( int $a, private readonly int $b = null, ): array { if ($a === $this->b) { $result = bar(); } else { $result = BazClass::bar($this->field1, $this->field2); } return $result; } public function setToNull(): self { $this->field1 = null; return $this; } }
主要差异
-
类的大括号必须 在同一行。
-
方法的大括号必须 在下一行。
其他规则
-
在
return
语句之前必须有一个空行,除非只有一个语句在其之前。<?php function a() { $a = '123'; return $a . ' is a number'; } function b() { $a = '123'; $b = 'is'; return $a . ' ' . $b . ' a number'; }
-
类体周围必须有一个空行,但匿名类体周围不能有空行。
<?php class Test { public function method() { $obj = new class extends Foo { public function overriddenMethod() { // code body } }; } }
-
必须声明所有方法、属性和常量的可见性。
-
在
if
、switch
、for
、foreach
、while
和do-while
体之后必须有一个空行。<?php if (true) { // some actions here } echo 'the next statement is here';
-
多行函数参数周围不能有对齐。
<?php function foo( string $input, int $key = 0, ): void {}