PHP CSフィクサー用のカスタムフィクサーのセット。
PHP CS FIXER:カスタムフィクサーを実行してインストールできます。
composer require --dev kubawerlos/php-cs-fixer-custom-fixersPHP CS FIXER Configuration Register Fixersで使用し、使用します。
<?php
return (new PhpCsFixerConfig())
+ ->registerCustomFixers(new PhpCsFixerCustomFixersFixers())
->setRules([
'@PSR2' => true,
'array_syntax' => ['syntax' => 'short'],
+ PhpCsFixerCustomFixersFixerNoLeadingSlashInGlobalNamespaceFixer::name() => true,
+ PhpCsFixerCustomFixersFixerPhpdocNoSuperfluousParamFixer::name() => true,
]);php-cs-fixer/shimパッケージを介してインストールされている場合、 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(); function 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 ):プロパティ間に空白線を保持するかどうか。デフォルトはfalseになりますminimum_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();Nullable Booleanタイプはありません。危険:nullが使用される場合。
<?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 ):弦の後続のスペースがない場合、連結を維持するかどうか。デフォルトはfalseになりますkeep_concatenation_for_different_quotes ( bool ):単一引用と二重引用が連結される場合は連結を維持するかどうか。デフォルトはfalseになります <?php
- echo 'foo' . 'bar';
+ echo 'foobar'; 1つの行に記述された要素リストには、後続のコンマを含めることはできません。
<?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"; Doctrine 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 ):バイナリ番号でセパレーターを追加、削除、または無視するかどうか。デフォルトはfalseになりますdecimal ( bool 、 null ):小数点でセパレーターを追加、削除、または無視するかどうか。デフォルトはfalseになりますfloat ( bool 、 null ):フロート数のセパレーターを追加、削除、または無視するかどうか。デフォルトはfalseになりますhexadecimal ( bool 、 null ):16進数でセパレーターを追加、削除、または無視するかどうか。デフォルトはfalseになりますoctal ( bool 、 null ):分離器をOctal数で追加、削除、または無視するかどうか。デフォルトは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アサーションは、実際の1つの前に議論を期待していなければなりません。危険:元の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() {} Method Signatureに従って、すべての@param Annotationsでdocblocksで注文します。非推奨:代わりに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プルリクエストを送信します。