Um conjunto de fixadores personalizados para o fixador php cs.
Fixer PHP CS: Fixadores personalizados podem ser instalados em execução:
composer require --dev kubawerlos/php-cs-fixer-custom-fixersEm seu php CS Fixer Configuration Register Fixers e use -os:
<?php
return (new PhpCsFixerConfig())
+ ->registerCustomFixers(new PhpCsFixerCustomFixersFixers())
->setRules([
'@PSR2' => true,
'array_syntax' => ['syntax' => 'short'],
+ PhpCsFixerCustomFixersFixerNoLeadingSlashInGlobalNamespaceFixer::name() => true,
+ PhpCsFixerCustomFixersFixerPhpdocNoSuperfluousParamFixer::name() => true,
]);php-cs-fixer/shim , exigindo o bootstrap pode ser necessário para carregar as classes PhpCsFixerCustomFixers :
require __DIR__ . ' /vendor/kubawerlos/php-cs-fixer-custom-fixers/bootstrap.php ' ;Os comentários devem estar cercados por espaços.
<?php
- /*foo*/
+ /* foo */ As funções configuradas devem ser comentadas. Arriscado: quando qualquer uma das funções configuradas tem efeitos colaterais ou é substituída. Opções de configuração:
functions ( array ): Lista de funções para comentar; Padrão para ['print_r', 'var_dump', 'var_export'] <?php
- var_dump($x);
+ //var_dump($x); Os aparelhos vazios do construtor devem estar em uma única linha.
<?php
class Foo {
public function __construct(
$param1,
$param2
- ) {
- }
+ ) {}
} Os nomes dos provedores de dados devem corresponder ao nome do teste. Depreciado: use php_unit_data_provider_name . Arriscado: ao confiar no nome da função do provedor de dados. Opções de configuração:
prefix ( string ): prefixo que substitui "teste"; Padrões para 'provide'suffix ( string ): Sufixo a ser adicionado no final "; Padrões aos 'Cases' <?php
class FooTest extends TestCase {
/**
- * @dataProvider dataProvider
+ * @dataProvider provideSomethingCases
*/
public function testSomething($expected, $actual) {}
- public function dataProvider() {}
+ public function provideSomethingCases() {}
} O tipo de retorno do provedor de dados phpunit deve ser iterable . Depreciado: use php_unit_data_provider_return_type em vez disso. Arriscado: ao confiar na assinatura do provedor de dados.
<?php
class FooTest extends TestCase {
/**
* @dataProvider provideSomethingCases
*/
public function testSomething($expected, $actual) {}
- public function provideSomethingCases(): array {}
+ public function provideSomethingCases(): iterable {}
} Os provedores de dados devem ser estáticos. Depreciado: use php_unit_data_provider_static . Arriscado: quando force é definida como true . Opções de configuração:
force ( bool ): se deve fazer com que os provedores de dados estáticos tenham chamadas de classe dinâmica; Padrões para false <?php
class FooTest extends TestCase {
/**
* @dataProvider provideSomethingCases
*/
public function testSomething($expected, $actual) {}
- public function provideSomethingCases() {}
+ public static function provideSomethingCases() {}
}Declare a declaração para tipos rígidos deve ser colocada na mesma linha, após a tag de abertura.
- <?php
+ <?php declare(strict_types=1);
$foo;
- declare(strict_types=1);
$bar; O corpo de função vazia deve ser abreviado como {} e colocado na mesma linha que o símbolo anterior, separado com um espaço.
<?php function foo(
int $x
- )
- {
- }
+ ) {} As classes definidas internamente por uma extensão ou o núcleo devem ser referenciadas com o caso correto. Depreciado: use class_reference_name_casing em vez disso.
<?php
- $foo = new STDClass();
+ $foo = new stdClass(); Função array_key_exists deve ser usada em vez de isset quando possível. Arriscado: quando a matriz não é definida, é multidimensional ou o comportamento depende do valor nulo.
<?php
- if (isset($array[$key])) {
+ if (array_key_exists($key, $array)) {
echo $array[$key];
}Comentários multilinas ou PHPDOCs devem conter uma linha de abertura e fechamento sem conteúdo adicional.
<?php
- /** Hello
+ /**
+ * Hello
* World!
*/As propriedades promovidas devem estar em linhas separadas. Opções de configuração:
keep_blank_lines ( bool ): Se deve manter as linhas em branco entre as propriedades; Padrões para falseminimum_number_of_parameters ( int ): número mínimo de parâmetros no construtor para corrigir; Padrões para 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
+ ) {}
}Não deve haver código comentado.
<?php
- //var_dump($_POST);
print_r($_POST);Não deve haver comentários gerados pelas migrações de doutrina.
<?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");
}
}Não deve haver teclas de matriz duplicadas. Opções de configuração:
ignore_expressions ( bool ): se deve manter expressões duplicadas (como elas podem retornar valores diferentes) ou não; Padrões para true <?php
$x = [
- "foo" => 1,
"bar" => 2,
"foo" => 3,
]; Não deve haver instruções use duplicado.
<?php
namespace FooBar;
use Foo;
- use Foo;
use Bar;Não deve haver importações do espaço de nome global.
<?php
namespace Foo;
- use DateTime;
class Bar {
- public function __construct(DateTime $dateTime) {}
+ public function __construct(DateTime $dateTime) {}
}As classes no espaço para nome global não podem conter barras principais.
<?php
- $x = new Foo();
+ $x = new Foo();
namespace Bar;
$y = new Baz();Não deve haver tipos booleanos anuláveis. Arriscado: quando o nulo é usado.
<?php
- function foo(?bool $bar) : ?bool
+ function foo(bool $bar) : bool
{
return $bar;
}Não deve haver comentários gerados pelo phpstorm.
<?php
- /**
- * Created by PhpStorm.
- * User: root
- * Date: 01.01.70
- * Time: 12:00
- */
namespace Foo;Não deve haver parâmetros passados por referência nas funções. Arriscado: quando confia na referência.
<?php
- function foo(&$x) {}
+ function foo($x) {} Não deve haver concatenação supérflua de cordas literais. Opções de configuração:
allow_preventing_trailing_spaces ( bool ): Se deve manter a concatenação se ele impedir que ele tenha espaços à direita na string; Padrões para falsekeep_concatenation_for_different_quotes ( bool ): se deve manter a concatenação se a citada única e a dupla citada seria concatenada; Padrões para false <?php
- echo 'foo' . 'bar';
+ echo 'foobar'; Uma lista de elementos gravada em uma linha não pode conter uma vírgula à direita.
<?php
- $x = ['foo', 'bar', ];
+ $x = ['foo', 'bar']; Não deve haver comentários inúteis.
<?php
/**
- * Class Foo
* Class to do something
*/
class Foo {
/**
- * Get bar
*/
function getBar() {}
} Não deve haver chamadas dirname inúteis.
<?php
- require dirname(__DIR__) . "/vendor/autoload.php";
+ require __DIR__ . "/../vendor/autoload.php"; Não pode haver comentários gerados pela doutrina ORM.
<?php
- /**
- * FooRepository
- *
- * This class was generated by the Doctrine ORM. Add your own custom
- * repository methods below.
- */
class FooRepository extends EntityRepository {}Não deve haver parênteses inúteis.
<?php
- foo(($bar));
+ foo($bar); Funções strlen e mb_strlen não devem ser comparadas a 0. Arriscado: quando a função strlen é substituída.
<?php
- $isEmpty = strlen($string) === 0;
- $isNotEmpty = strlen($string) > 0;
+ $isEmpty = $string === '';
+ $isNotEmpty = $string !== ''; Os literais numéricos devem ter configurados separadores. Depreciado: use numeric_literal_separator . Opções de configuração:
binary ( bool , null ): se adicionar, remover ou ignorar os separadores em números binários.; Padrões para falsedecimal ( bool , null ): se adicionar, remover ou ignorar os separadores em números decimais.; Padrões para falsefloat ( bool , null ): Se adicionar, remover ou ignorar os separadores em números de flutuação.; Padrões para falsehexadecimal ( bool , null ): se adicionar, remover ou ignorar os separadores em números hexadecimais; Padrões para falseoctal ( bool , null ): se adicionar, remover ou ignorar os separadores em números octal.; Padrões para 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 As afirmações da phpunit devem ter esperado argumento antes do real. Arriscado: quando os métodos originais de phpunit são substituídos.
<?php
class FooTest extends TestCase {
public function testFoo() {
- self::assertSame($value, 10);
+ self::assertSame(10, $value);
}
} As afirmações de phpunit, como assertCount e assertInstanceOf devem ser usadas sobre assertEquals / assertSame . Arriscado: quando os métodos originais de phpunit são substituídos.
<?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);
}
} As funções fail da phpunit, markTestIncomplete e markTestSkipped não devem ser seguidas diretamente pelo return . Arriscado: quando os métodos originais de phpunit são substituídos.
<?php
class FooTest extends TestCase {
public function testFoo() {
$this->markTestSkipped();
- return;
}
} O estilo de matriz genérico deve ser usado no PHPDOC. Depreciado: use phpdoc_array_type .
<?php
/**
- * @return int[]
+ * @return array<int>
*/
function foo() { return [1, 2]; } As anotações @var devem ser usadas corretamente no código.
<?php
- /** @var Foo $foo */
$bar = new Foo();Não deve haver parâmetros supérfluos no PHPDOC.
<?php
/**
* @param bool $b
- * @param int $i
* @param string $s this is string
- * @param string $s duplicated
*/
function foo($b, $s) {}Somente as anotações listadas são permitidas no PHPDOC. Opções de configuração:
elements ( array ): Lista de anotações a serem mantidas no PHPDOC; Padrões para [] <?php
/**
* @author John Doe
- * @package foo
- * @subpackage bar
* @version 1.0
*/
function foo_bar() {} Ordens todas as anotações @param em docblocks de acordo com a assinatura do método. Depreciado: use phpdoc_param_order .
<?php
/**
+ * @param int $a
* @param int $b
- * @param int $a
* @param int $c
*/
function foo($a, $b, $c) {} As anotações @param devem ter um tipo.
<?php
/**
* @param string $foo
- * @param $bar
+ * @param mixed $bar
*/
function a($foo, $bar) {} No PHPDOC, o elemento de classe ou interface deve ser self em vez do próprio nome da classe.
<?php
class Foo {
/**
- * @var Foo
+ * @var self
*/
private $instance;
} A anotação @var deve estar em uma única linha se for o único conteúdo.
<?php
class Foo {
- /**
- * @var string
- */
+ /** @var string */
private $name;
} list de tipos PHPDOC deve ser usada em vez de array sem um tipo de chave. Depreciado: use phpdoc_list_type .
<?php
/**
- * @param array<string>
+ * @param list<string>
*/
function foo($x) {}Os tipos de phpdoc vírgulas não devem ser precedidos por um espaço em branco e devem ser sucedidos por um único espaço em branco.
- <?php /** @var array<int,string> */
+ <?php /** @var array<int, string> */ Os tipos de phpdoc devem ser aparados.
<?php
/**
- * @param null | string $x
+ * @param null|string $x
*/
function foo($x) {} Converte as anotações @var para assert chamadas quando usadas em atribuições.
<?php
- /** @var string $x */
$x = getValue();
+ assert(is_string($x)); As propriedades do construtor devem ser promovidas, se possível. Opções de configuração:
promote_only_existing_properties ( bool ): se deve promover apenas propriedades definidas na classe; Padrões para false <?php
class Foo {
- private string $bar;
- public function __construct(string $bar) {
- $this->bar = $bar;
+ public function __construct(private string $bar) {
}
}As propriedades promovidas devem ser declaradas somente leitura. Arriscado: quando a propriedade é escrita.
<?php class Foo {
public function __construct(
- public array $a,
- public bool $b,
+ public readonly array $a,
+ public readonly bool $b,
) {}
}As declarações não seguidas por um ponto de vírgula devem ser seguidas por um único espaço. Opções de configuração:
allow_linebreak ( bool ): se deve permitir a declaração seguida por linebreak; Padrões para false <?php
- $foo = new Foo();
- echo$foo->bar();
+ $foo = new Foo();
+ echo $foo->bar(); As declarações não precedidas por uma quebra de linha devem ser precedidas por um único espaço.
<?php
- $foo =new Foo();
+ $foo = new Foo(); Uma classe que implementa o método __toString() deve implementar explicitamente a interface Stringable .
<?php
- class Foo
+ class Foo implements Stringable
{
public function __toString()
{
return "Foo";
}
}Solicite um recurso ou relate um bug criando um problema.
Como alternativa, bifurque o repositório, comprometa suas alterações e verifique se está tudo bem:
composer verifye envie uma solicitação de tração.