Ein Satz benutzerdefinierter Fixierer für PHP CS Fixer.
PHP CS Fixer: Benutzerdefinierte Fixierer können durch Ausführen installiert werden:
composer require --dev kubawerlos/php-cs-fixer-custom-fixersIn Ihrem PHP CS Fixer -Konfigurationsregister -Fixierer und verwenden Sie sie:
<?php
return (new PhpCsFixerConfig())
+ ->registerCustomFixers(new PhpCsFixerCustomFixersFixers())
->setRules([
'@PSR2' => true,
'array_syntax' => ['syntax' => 'short'],
+ PhpCsFixerCustomFixersFixerNoLeadingSlashInGlobalNamespaceFixer::name() => true,
+ PhpCsFixerCustomFixersFixerPhpdocNoSuperfluousParamFixer::name() => true,
]);php-cs-fixer/shim Paket installiert ist, muss Bootstrap erforderlich sein, um PhpCsFixerCustomFixers -Klassen zu laden:
require __DIR__ . ' /vendor/kubawerlos/php-cs-fixer-custom-fixers/bootstrap.php ' ;Kommentare müssen von Räumen umgeben sein.
<?php
- /*foo*/
+ /* foo */ Die konfigurierten Funktionen müssen kommentiert werden. Risiko: Wenn eine der konfigurierten Funktionen Nebenwirkungen hat oder überschrieben wird. Konfigurationsoptionen:
functions ( array ): Liste der Funktionen, die sich kommentieren; Standardeinstellungen zu ['print_r', 'var_dump', 'var_export'] <?php
- var_dump($x);
+ //var_dump($x); Die leeren Zahnspangen des Konstruktors müssen auf einer einzigen Linie sein.
<?php
class Foo {
public function __construct(
$param1,
$param2
- ) {
- }
+ ) {}
} Datenanbieternamen müssen mit dem Namen des Tests übereinstimmen. Veraltet: Verwenden Sie stattdessen php_unit_data_provider_name . Riskant: Wenn Sie sich auf den Namen der Datenanbieterfunktion verlassen. Konfigurationsoptionen:
prefix ( string ): Präfix, das "Test" ersetzt; Standardeinstellungen zu 'provide'suffix ( string ): Suffix, das am Ende hinzugefügt werden soll "; standardmäßig 'Cases' <?php
class FooTest extends TestCase {
/**
- * @dataProvider dataProvider
+ * @dataProvider provideSomethingCases
*/
public function testSomething($expected, $actual) {}
- public function dataProvider() {}
+ public function provideSomethingCases() {}
} Der Rückgabetyp des Phpunit -Datenanbieters muss iterable sein. Veraltet: Verwenden Sie stattdessen php_unit_data_provider_return_type . Riskant: Wenn Sie sich auf die Unterschrift des Datenanbieters verlassen.
<?php
class FooTest extends TestCase {
/**
* @dataProvider provideSomethingCases
*/
public function testSomething($expected, $actual) {}
- public function provideSomethingCases(): array {}
+ public function provideSomethingCases(): iterable {}
} Datenanbieter müssen statisch sein. Veraltet: Verwenden Sie stattdessen php_unit_data_provider_static . Riskant: Wenn force auf true eingestellt ist. Konfigurationsoptionen:
force ( bool ): ob statische Datenanbieter mit dynamischen Klassenaufrufen gestellt werden sollen; standardmäßig false <?php
class FooTest extends TestCase {
/**
* @dataProvider provideSomethingCases
*/
public function testSomething($expected, $actual) {}
- public function provideSomethingCases() {}
+ public static function provideSomethingCases() {}
}Deklarieren Sie die Anweisung für strenge Typen müssen nach dem Eröffnungs -Tag in derselben Zeile platziert werden.
- <?php
+ <?php declare(strict_types=1);
$foo;
- declare(strict_types=1);
$bar; Der leere Funktionskörper muss als {} abgekürzt und auf die gleiche Zeile wie das vorherige Symbol platziert werden, das mit einem Raum getrennt ist.
<?php function foo(
int $x
- )
- {
- }
+ ) {} Die intern durch eine Erweiterung oder auf den Kern definierten Klassen müssen mit dem richtigen Fall verwiesen werden. Veraltet: Verwenden Sie stattdessen class_reference_name_casing .
<?php
- $foo = new STDClass();
+ $foo = new stdClass(); array_key_exists müssen nach Möglichkeit anstelle von isset werden. Risiko: Wenn Array nicht definiert ist, ist mehrdimensional oder Verhalten stützt sich auf den Nullwert.
<?php
- if (isset($array[$key])) {
+ if (array_key_exists($key, $array)) {
echo $array[$key];
}Multiline -Kommentare oder PHPDOCs müssen eine Öffnungs- und Schließlinie ohne zusätzliche Inhalte enthalten.
<?php
- /** Hello
+ /**
+ * Hello
* World!
*/Beförderte Eigenschaften müssen in getrennten Zeilen sein. Konfigurationsoptionen:
keep_blank_lines ( bool ): ob leere Linien zwischen Eigenschaften beibehalten; standardmäßig falseminimum_number_of_parameters ( int ): minimale Anzahl von Parametern im Konstruktor zu beheben; standardmäßig 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
+ ) {}
}Es darf keinen kommentierten Code geben.
<?php
- //var_dump($_POST);
print_r($_POST);Es dürfen keine Kommentare durch Lehre Migrationen erzeugt werden.
<?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");
}
}Es darf keine doppelten Arrayschlüssel geben. Konfigurationsoptionen:
ignore_expressions ( bool ): Ob Sie doppelte Ausdrücke halten (da sie unterschiedliche Werte zurückgeben können) oder nicht; standardmäßig true <?php
$x = [
- "foo" => 1,
"bar" => 2,
"foo" => 3,
]; Es darf keine doppelten use geben.
<?php
namespace FooBar;
use Foo;
- use Foo;
use Bar;Es darf keine Importe aus dem globalen Namespace geben.
<?php
namespace Foo;
- use DateTime;
class Bar {
- public function __construct(DateTime $dateTime) {}
+ public function __construct(DateTime $dateTime) {}
}Klassen im globalen Namespace können keine führenden Schrägstriche enthalten.
<?php
- $x = new Foo();
+ $x = new Foo();
namespace Bar;
$y = new Baz();Es darf keine nullbaren Booleschen Typen geben. Riskant: Wenn der Null verwendet wird.
<?php
- function foo(?bool $bar) : ?bool
+ function foo(bool $bar) : bool
{
return $bar;
}Es dürfen keine Kommentare von Phpstorming geben.
<?php
- /**
- * Created by PhpStorm.
- * User: root
- * Date: 01.01.70
- * Time: 12:00
- */
namespace Foo;Es dürfen keine Parameter in Funktionen übergeben. Riskant: Wenn man sich auf Referenz verlassen.
<?php
- function foo(&$x) {}
+ function foo($x) {} Es darf keine überflüssige Verkettung von buchstäblichen Saiten geben. Konfigurationsoptionen:
allow_preventing_trailing_spaces ( bool ): Unabhängig davon, ob die Verkettung beibehalten wird, wenn es verhindert wird, standardmäßig falsekeep_concatenation_for_different_quotes ( bool ): Ob die Verkettung beibehalten wird, wenn einzeln zitierte und doppelte zitierte verkettet wären; standardmäßig false <?php
- echo 'foo' . 'bar';
+ echo 'foobar'; Eine auf einer Zeile geschriebene Elementliste kann kein nachverfolgunges Komma enthalten.
<?php
- $x = ['foo', 'bar', ];
+ $x = ['foo', 'bar']; Es darf keine nutzlosen Kommentare geben.
<?php
/**
- * Class Foo
* Class to do something
*/
class Foo {
/**
- * Get bar
*/
function getBar() {}
} Es darf keine nutzlosen dirname -Anrufe geben.
<?php
- require dirname(__DIR__) . "/vendor/autoload.php";
+ require __DIR__ . "/../vendor/autoload.php"; Es kann keine Kommentare von Doctrine ORM geben.
<?php
- /**
- * FooRepository
- *
- * This class was generated by the Doctrine ORM. Add your own custom
- * repository methods below.
- */
class FooRepository extends EntityRepository {}Es darf keine nutzlosen Klammern geben.
<?php
- foo(($bar));
+ foo($bar); Funktionen strlen und mb_strlen dürfen nicht mit 0 verglichen werden. Risky: Wenn die Funktion strlen überschrieben wird.
<?php
- $isEmpty = strlen($string) === 0;
- $isNotEmpty = strlen($string) > 0;
+ $isEmpty = $string === '';
+ $isNotEmpty = $string !== ''; Numerische Literale müssen Separatoren konfiguriert haben. Veraltet: Verwenden Sie stattdessen numeric_literal_separator . Konfigurationsoptionen:
binary ( bool , null ): Ob hinzufügen, entfernen oder ignorieren Sie Separatoren in Binärzahlen.; standardmäßig falsedecimal ( bool , null ): Ob hinzufügen, entfernen oder ignorieren, Separatoren in Dezimalzahlen.; standardmäßig falsefloat ( bool , null ): ob hinzufügen, entfernen oder ignorieren Sie Separatoren in Schwimmernummern; standardmäßig falsehexadecimal ( bool , null ): Ob hinzufügen, entfernen oder ignorieren, Separatoren in Hexadezimalzahlen.; standardmäßig falseoctal ( bool , null ): Ob hinzufügen, entfernen oder ignorieren Sie Separatoren in Oktalzahlen.; standardmäßig 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 -Behauptungen müssen vor dem tatsächlichen Argument erwartet haben. Riskant: Wenn ursprüngliche Phpunit -Methoden überschrieben werden.
<?php
class FooTest extends TestCase {
public function testFoo() {
- self::assertSame($value, 10);
+ self::assertSame(10, $value);
}
} Phpunit -Behauptungen wie assertCount und assertInstanceOf von assertEquals / assertSame müssen verwendet werden. Riskant: Wenn ursprüngliche Phpunit -Methoden überschrieben werden.
<?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 und markTestSkipped -Funktionen dürfen nicht direkt von return gefolgt werden. Riskant: Wenn ursprüngliche Phpunit -Methoden überschrieben werden.
<?php
class FooTest extends TestCase {
public function testFoo() {
$this->markTestSkipped();
- return;
}
} Der generische Array -Stil sollte in phpdoc verwendet werden. Veraltet: Verwenden Sie stattdessen phpdoc_array_type .
<?php
/**
- * @return int[]
+ * @return array<int>
*/
function foo() { return [1, 2]; } Die @var -Anmerkungen müssen im Code korrekt verwendet werden.
<?php
- /** @var Foo $foo */
$bar = new Foo();Es darf keine überflüssigen Parameter in phpdoc geben.
<?php
/**
* @param bool $b
- * @param int $i
* @param string $s this is string
- * @param string $s duplicated
*/
function foo($b, $s) {}Nur die aufgelisteten Anmerkungen sind in phpdoc zulässig. Konfigurationsoptionen:
elements ( array ): Liste der Anmerkungen, die in PHPDOC bleiben sollen; Standardeinstellungen zu [] <?php
/**
* @author John Doe
- * @package foo
- * @subpackage bar
* @version 1.0
*/
function foo_bar() {} Bestellt alle @param -Anmerkungen in Docblocks gemäß Methodensignatur an. Veraltet: Verwenden Sie stattdessen phpdoc_param_order .
<?php
/**
+ * @param int $a
* @param int $b
- * @param int $a
* @param int $c
*/
function foo($a, $b, $c) {} Die @param -Anmerkungen müssen einen Typ haben.
<?php
/**
* @param string $foo
- * @param $bar
+ * @param mixed $bar
*/
function a($foo, $bar) {} In PHPDOC muss das Selbst- oder Schnittstellenelement self anstelle des Klassennamens selbst verwendet werden.
<?php
class Foo {
/**
- * @var Foo
+ * @var self
*/
private $instance;
} Die @var -Annotation muss in einer einzigen Zeile sein, wenn es sich um den einzigen Inhalt handelt.
<?php
class Foo {
- /**
- * @var string
- */
+ /** @var string */
private $name;
} list der PHPDOC -Typ muss anstelle von array ohne Schlüsseltyp verwendet werden. Veraltet: Verwenden Sie stattdessen phpdoc_list_type .
<?php
/**
- * @param array<string>
+ * @param list<string>
*/
function foo($x) {}PHPDOC -Typen Commas dürfen nicht eine Weißespace vorausgehen und von einer einzigen Whitespace abgelöst werden.
- <?php /** @var array<int,string> */
+ <?php /** @var array<int, string> */ PHPDOC -Typen müssen beschnitten werden.
<?php
/**
- * @param null | string $x
+ * @param null|string $x
*/
function foo($x) {} Konvertiert @var -Anmerkungen, um Aufrufe zu assert , wenn sie in Zuweisungen verwendet werden.
<?php
- /** @var string $x */
$x = getValue();
+ assert(is_string($x)); Konstruktoreigenschaften müssen nach Möglichkeit gefördert werden. Konfigurationsoptionen:
promote_only_existing_properties ( bool ): ob nur Eigenschaften fördern, die in der Klasse definiert sind; standardmäßig false <?php
class Foo {
- private string $bar;
- public function __construct(string $bar) {
- $this->bar = $bar;
+ public function __construct(private string $bar) {
}
}Beförderte Eigenschaften müssen als schreibgeschützt erklärt werden. Riskant: Wenn Eigentum geschrieben wird.
<?php class Foo {
public function __construct(
- public array $a,
- public bool $b,
+ public readonly array $a,
+ public readonly bool $b,
) {}
}Aussagen nicht gefolgt von einem Semikolon müssen von einem einzigen Raum folgen. Konfigurationsoptionen:
allow_linebreak ( bool ): ob Anweisung gefolgt von lineBreak zuzulassen; standardmäßig false <?php
- $foo = new Foo();
- echo$foo->bar();
+ $foo = new Foo();
+ echo $foo->bar(); Aussagen, denen eine Linienbrechung nicht vorausgeht, müssen ein einzelner Raum vorausgehen.
<?php
- $foo =new Foo();
+ $foo = new Foo(); Eine Klasse, die die Methode __toString() implementiert, muss die Stringable -Schnittstelle explizit implementieren.
<?php
- class Foo
+ class Foo implements Stringable
{
public function __toString()
{
return "Foo";
}
}Fordern Sie eine Funktion an oder melden Sie einen Fehler, indem Sie ein Problem erstellen.
Alternativ können Sie das Repository aufgeben, Ihre Änderungen festlegen und sicherstellen, dass alles in Ordnung ist:
composer verifyund senden Sie eine Pull -Anfrage.