一组用于PHP CS修复程序的自定义修复程序。
PHP CS修复程序:可以通过运行来安装自定义修复程序:
composer require --dev kubawerlos/php-cs-fixer-custom-fixers在您的PHP CS Fixer配置寄存器中,并使用它们:
<?php
return (new PhpCsFixerConfig())
+ ->registerCustomFixers(new PhpCsFixerCustomFixersFixers())
->setRules([
'@PSR2' => true,
'array_syntax' => ['syntax' => 'short'],
+ PhpCsFixerCustomFixersFixerNoLeadingSlashInGlobalNamespaceFixer::name() => true,
+ PhpCsFixerCustomFixersFixerPhpdocNoSuperfluousParamFixer::name() => true,
]);php-cs-fixer/shim软件包安装PHP CS Fixer时,可能需要进行bootstrap来加载PhpCsFixerCustomFixers类:
require __DIR__ . ' /vendor/kubawerlos/php-cs-fixer-custom-fixers/bootstrap.php ' ;评论必须被空间包围。
<?php
- /*foo*/
+ /* foo */ 必须评论配置的功能。风险:当任何配置的功能都具有副作用或被覆盖时。配置选项:
functions ( array ):要注释的函数列表;默认为['print_r', 'var_dump', 'var_export'] <?php
- var_dump($x);
+ //var_dump($x); 构造函数的空括号必须在一条线上。
<?php
class Foo {
public function __construct(
$param1,
$param2
- ) {
- }
+ ) {}
}数据提供商名称必须匹配测试的名称。弃用:改用php_unit_data_provider_name 。风险:依靠数据提供商功能的名称。配置选项:
prefix ( string ):替换“测试”的前缀;默认为'provide'suffix ( string ):最后在末端添加的后缀“;默认为'Cases' <?php
class FooTest extends TestCase {
/**
- * @dataProvider dataProvider
+ * @dataProvider provideSomethingCases
*/
public function testSomething($expected, $actual) {}
- public function dataProvider() {}
+ public function provideSomethingCases() {}
} Phpunit数据提供商的返回类型必须iterable 。弃用:使用php_unit_data_provider_return_type 。风险:依靠数据提供商的签名。
<?php
class FooTest extends TestCase {
/**
* @dataProvider provideSomethingCases
*/
public function testSomething($expected, $actual) {}
- public function provideSomethingCases(): array {}
+ public function provideSomethingCases(): iterable {}
}数据提供商必须是静态的。弃用:改用php_unit_data_provider_static 。风险:当force设置为true 。配置选项:
force ( bool ):是否要使具有动态类调用的静态数据提供商;默认为false <?php
class FooTest extends TestCase {
/**
* @dataProvider provideSomethingCases
*/
public function testSomething($expected, $actual) {}
- public function provideSomethingCases() {}
+ public static function provideSomethingCases() {}
}在开场标签之后,必须将严格类型的声明声明放在同一行上。
- <?php
+ <?php declare(strict_types=1);
$foo;
- declare(strict_types=1);
$bar;空功能主体必须缩写为{} ,并将其放在与上一个符号相同的线上,该符号与空间分开。
<?php function foo(
int $x
- )
- {
- }
+ ) {} 必须用正确的情况引用按扩展名或核心定义的类。弃用:改用class_reference_name_casing 。
<?php
- $foo = new STDClass();
+ $foo = new stdClass(); 函数array_key_exists必须在可能的情况下而不是isset使用。风险:当未定定义数组时,是多维或行为依赖于零值。
<?php
- if (isset($array[$key])) {
+ if (array_key_exists($key, $array)) {
echo $array[$key];
}多行论或PHPDOC必须包含没有其他内容的开口和闭合线。
<?php
- /** Hello
+ /**
+ * Hello
* World!
*/促进的属性必须在单独的线上。配置选项:
keep_blank_lines ( bool ):是否在属性之间保持空白;默认为falseminimum_number_of_parameters ( int ):要修复的构造函数中的最小参数数;默认为1 <?php class Foo {
- public function __construct(private array $a, private bool $b, private int $i) {}
+ public function __construct(
+ private array $a,
+ private bool $b,
+ private int $i
+ ) {}
}必须没有评论的代码。
<?php
- //var_dump($_POST);
print_r($_POST);学说迁移必须没有产生的评论。
<?php
namespace Migrations;
use DoctrineDBALSchemaSchema;
- /**
- * Auto-generated Migration: Please modify to your needs!
- */
final class Version20180609123456 extends AbstractMigration
{
public function up(Schema $schema)
{
- // this up() migration is auto-generated, please modify it to your needs
$this->addSql("UPDATE t1 SET col1 = col1 + 1");
}
public function down(Schema $schema)
{
- // this down() migration is auto-generated, please modify it to your needs
$this->addSql("UPDATE t1 SET col1 = col1 - 1");
}
}必须没有重复的数组键。配置选项:
ignore_expressions ( bool ):是否保留重复的表达式(因为它们可能返回不同的值);默认为true <?php
$x = [
- "foo" => 1,
"bar" => 2,
"foo" => 3,
];必须没有重复的use语句。
<?php
namespace FooBar;
use Foo;
- use Foo;
use Bar;必须从全局名称空间中进口。
<?php
namespace Foo;
- use DateTime;
class Bar {
- public function __construct(DateTime $dateTime) {}
+ public function __construct(DateTime $dateTime) {}
}全局名称空间中的类不能包含领先的斜线。
<?php
- $x = new Foo();
+ $x = new Foo();
namespace Bar;
$y = new Baz();必须没有可无效的布尔类型。风险:使用零时。
<?php
- function foo(?bool $bar) : ?bool
+ function foo(bool $bar) : bool
{
return $bar;
}必须没有PHPSTORM产生的评论。
<?php
- /**
- * Created by PhpStorm.
- * User: root
- * Date: 01.01.70
- * Time: 12:00
- */
namespace Foo;必须在函数中引用的参数传递。风险:依靠参考。
<?php
- function foo(&$x) {}
+ function foo($x) {} 必须没有字面字符串的多余串联。配置选项:
allow_preventing_trailing_spaces ( bool ):是否保留串联(如果它防止字符串中的尾间空间);默认为falsekeep_concatenation_for_different_quotes ( bool ):如果将单引号和双引号置于串联,是否要保持串联;默认为false <?php
- echo 'foo' . 'bar';
+ echo 'foobar'; 在一行上写的元素列表不能包含尾随逗号。
<?php
- $x = ['foo', 'bar', ];
+ $x = ['foo', 'bar']; 一定没有无用的评论。
<?php
/**
- * Class Foo
* Class to do something
*/
class Foo {
/**
- * Get bar
*/
function getBar() {}
}一定没有无用的dirname电话。
<?php
- require dirname(__DIR__) . "/vendor/autoload.php";
+ require __DIR__ . "/../vendor/autoload.php"; 学说ORM无法产生评论。
<?php
- /**
- * FooRepository
- *
- * This class was generated by the Doctrine ORM. Add your own custom
- * repository methods below.
- */
class FooRepository extends EntityRepository {}一定没有无用的括号。
<?php
- foo(($bar));
+ foo($bar); 函数strlen和mb_strlen不得与0相比。风险:当strlen被覆盖时。
<?php
- $isEmpty = strlen($string) === 0;
- $isNotEmpty = strlen($string) > 0;
+ $isEmpty = $string === '';
+ $isNotEmpty = $string !== ''; 数字文字必须配置了分离器。弃用:改用numeric_literal_separator 。配置选项:
binary ( bool , null ):是添加,删除还是忽略二进制数字的分离器。默认为falsedecimal ( bool , null ):是添加,删除还是忽略小数数的分离器。默认为falsefloat ( bool , null ):是否添加,删除或忽略浮点数中的分离器。默认为falsehexadecimal ( bool , null ):是否添加,删除或忽略十六进制数字中的分离器。默认为falseoctal ( bool , null ):是添加,删除还是忽略八十个分离器。默认为false <?php
- echo 0b01010100_01101000; // binary
- echo 135_798_642; // decimal
- echo 1_234.456_78e-4_321; // float
- echo 0xAE_B0_42_FC; // hexadecimal
- echo 0123_4567; // octal
+ echo 0b0101010001101000; // binary
+ echo 135798642; // decimal
+ echo 1234.45678e-4321; // float
+ echo 0xAEB042FC; // hexadecimal
+ echo 01234567; // octal Phpunit断言必须在实际论点之前预期论证。风险:当原始phpunit方法被覆盖时。
<?php
class FooTest extends TestCase {
public function testFoo() {
- self::assertSame($value, 10);
+ self::assertSame(10, $value);
}
}诸如assertCount和assertInstanceOf之类的phpunit断言必须用于assertEquals / assertSame 。风险:当原始phpunit方法被覆盖时。
<?php
class FooTest extends TestCase {
public function testFoo() {
- self::assertSame($size, count($elements));
- self::assertSame($className, get_class($object));
+ self::assertCount($size, $elements);
+ self::assertInstanceOf($className, $object);
}
} phpunit fail , markTestIncomplete和markTestSkipped函数不得直接遵循return 。风险:当原始phpunit方法被覆盖时。
<?php
class FooTest extends TestCase {
public function testFoo() {
$this->markTestSkipped();
- return;
}
} PHPDOC应使用通用阵列样式。弃用:改用phpdoc_array_type 。
<?php
/**
- * @return int[]
+ * @return array<int>
*/
function foo() { return [1, 2]; } @var注释必须在代码中正确使用。
<?php
- /** @var Foo $foo */
$bar = new Foo();PHPDOC中必须没有多余的参数。
<?php
/**
* @param bool $b
- * @param int $i
* @param string $s this is string
- * @param string $s duplicated
*/
function foo($b, $s) {}PHPDOC中仅允许列出的注释。配置选项:
elements ( array ):保存在PHPDOC中的注释列表;默认为[] <?php
/**
* @author John Doe
- * @package foo
- * @subpackage bar
* @version 1.0
*/
function foo_bar() {}根据方法签名订购DocBlocks中的所有@param注释。弃用:改用phpdoc_param_order 。
<?php
/**
+ * @param int $a
* @param int $b
- * @param int $a
* @param int $c
*/
function foo($a, $b, $c) {} @param注释必须具有类型。
<?php
/**
* @param string $foo
- * @param $bar
+ * @param mixed $bar
*/
function a($foo, $bar) {}在PHPDOC中,必须使用类或接口元素self而不是类名称本身。
<?php
class Foo {
/**
- * @var Foo
+ * @var self
*/
private $instance;
} @var注释是唯一的内容,必须在单行上。
<?php
class Foo {
- /**
- * @var string
- */
+ /** @var string */
private $name;
}必须使用PHPDOC类型list ,而不是没有密钥类型的array 。弃用:改用phpdoc_list_type 。
<?php
/**
- * @param array<string>
+ * @param list<string>
*/
function foo($x) {}phpdoc类型逗号不得在空格之前先于一个空间,并且必须由单个空格取得成功。
- <?php /** @var array<int,string> */
+ <?php /** @var array<int, string> */ 必须修剪PHPDOC类型。
<?php
/**
- * @param null | string $x
+ * @param null|string $x
*/
function foo($x) {}在分配中使用时,将@var注释转换为assert通话。
<?php
- /** @var string $x */
$x = getValue();
+ assert(is_string($x)); 如果可能的话,必须促进构造函数。配置选项:
promote_only_existing_properties ( bool ):是否仅促进类中定义的属性;默认为false <?php
class Foo {
- private string $bar;
- public function __construct(string $bar) {
- $this->bar = $bar;
+ public function __construct(private string $bar) {
}
}必须将促进的属性声明为只读。风险:写财产时。
<?php class Foo {
public function __construct(
- public array $a,
- public bool $b,
+ public readonly array $a,
+ public readonly bool $b,
) {}
}陈述未遵循半隆后,必须是一个空间。配置选项:
allow_linebreak ( bool ):是否允许陈述后面的线路破坏;默认为false <?php
- $foo = new Foo();
- echo$foo->bar();
+ $foo = new Foo();
+ echo $foo->bar(); 在未列出线路之前的语句必须先于单个空间之前。
<?php
- $foo =new Foo();
+ $foo = new Foo(); 实现__toString()方法的类必须明确实现Stringable接口。
<?php
- class Foo
+ class Foo implements Stringable
{
public function __toString()
{
return "Foo";
}
}请求功能或通过创建问题报告错误。
或者,分叉存储库,提交您的更改,并确保一切都很好:
composer verify并提交拉动请求。