Un conjunto de fijadores personalizados para el fijador PHP CS.
PHP CS FIXER: los fijadores personalizados se pueden instalar ejecutando:
composer require --dev kubawerlos/php-cs-fixer-custom-fixersEn sus fijadores de registro de configuración de fijador PHP CS y úsalos:
<?php
return (new PhpCsFixerConfig())
+ ->registerCustomFixers(new PhpCsFixerCustomFixersFixers())
->setRules([
'@PSR2' => true,
'array_syntax' => ['syntax' => 'short'],
+ PhpCsFixerCustomFixersFixerNoLeadingSlashInGlobalNamespaceFixer::name() => true,
+ PhpCsFixerCustomFixersFixerPhpdocNoSuperfluousParamFixer::name() => true,
]);php-cs-fixer/shim , puede ser necesario requerir Bootstrap para cargar clases de PhpCsFixerCustomFixers :
require __DIR__ . ' /vendor/kubawerlos/php-cs-fixer-custom-fixers/bootstrap.php ' ;Los comentarios deben estar rodeados de espacios.
<?php
- /*foo*/
+ /* foo */ Las funciones configuradas deben ser comentadas. Riesgo: cuando cualquiera de las funciones configuradas tiene efectos secundarios o se sobrescriben. Opciones de configuración:
functions ( array ): Lista de funciones para comentar; El valor predeterminado a ['print_r', 'var_dump', 'var_export'] <?php
- var_dump($x);
+ //var_dump($x); Los frenos vacíos del constructor deben estar en una sola línea.
<?php
class Foo {
public function __construct(
$param1,
$param2
- ) {
- }
+ ) {}
} Los nombres del proveedor de datos deben coincidir con el nombre de la prueba. Deprecido: use php_unit_data_provider_name en su lugar. Riesgo: al confiar en el nombre de la función del proveedor de datos. Opciones de configuración:
prefix ( string ): prefijo que reemplaza "prueba"; El valor predeterminado es 'provide'suffix ( string ): sufijo que se agregará al final "; el valor predeterminado a 'Cases' <?php
class FooTest extends TestCase {
/**
- * @dataProvider dataProvider
+ * @dataProvider provideSomethingCases
*/
public function testSomething($expected, $actual) {}
- public function dataProvider() {}
+ public function provideSomethingCases() {}
} El tipo de retorno del proveedor de datos PHPUnit debe ser iterable . Deprecido: use php_unit_data_provider_return_type en su lugar. Riesgo: al confiar en la firma del proveedor de datos.
<?php
class FooTest extends TestCase {
/**
* @dataProvider provideSomethingCases
*/
public function testSomething($expected, $actual) {}
- public function provideSomethingCases(): array {}
+ public function provideSomethingCases(): iterable {}
} Los proveedores de datos deben ser estáticos. Deprecido: use php_unit_data_provider_static en su lugar. Riesgo: cuando force se establece en true . Opciones de configuración:
force ( bool ): si se debe hacer que los proveedores de datos estáticos tengan llamadas de clase dinámica; El valor predeterminado a false <?php
class FooTest extends TestCase {
/**
* @dataProvider provideSomethingCases
*/
public function testSomething($expected, $actual) {}
- public function provideSomethingCases() {}
+ public static function provideSomethingCases() {}
}Declare la declaración para tipos estrictos debe colocarse en la misma línea, después de la etiqueta de apertura.
- <?php
+ <?php declare(strict_types=1);
$foo;
- declare(strict_types=1);
$bar; El cuerpo de la función vacía debe abreviarse como {} y colocarse en la misma línea que el símbolo anterior, separado con un espacio.
<?php function foo(
int $x
- )
- {
- }
+ ) {} Las clases definidas internamente por una extensión o el núcleo deben referenciarse con el caso correcto. Descargado: use class_reference_name_casing en su lugar.
<?php
- $foo = new STDClass();
+ $foo = new stdClass(); La función array_key_exists debe usarse en lugar de isset cuando sea posible. Riesgo: cuando la matriz no se define, es multidimensional o el comportamiento depende del valor nulo.
<?php
- if (isset($array[$key])) {
+ if (array_key_exists($key, $array)) {
echo $array[$key];
}Los comentarios múltiples o PHPDOC deben contener una línea de apertura y cierre sin contenido adicional.
<?php
- /** Hello
+ /**
+ * Hello
* World!
*/Las propiedades promocionadas deben estar en líneas separadas. Opciones de configuración:
keep_blank_lines ( bool ): si debe mantener las líneas en blanco entre las propiedades; El valor predeterminado a falseminimum_number_of_parameters ( int ): número mínimo de parámetros en el constructor para arreglar; predeterminado a 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
+ ) {}
}No debe haber código comentado.
<?php
- //var_dump($_POST);
print_r($_POST);No debe haber comentarios generados por migraciones de doctrina.
<?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");
}
}No debe haber teclas de matriz duplicadas. Opciones de configuración:
ignore_expressions ( bool ): si debe mantener expresiones duplicadas (ya que podrían devolver diferentes valores) o no; El valor predeterminado es true <?php
$x = [
- "foo" => 1,
"bar" => 2,
"foo" => 3,
]; No debe haber declaraciones use duplicados.
<?php
namespace FooBar;
use Foo;
- use Foo;
use Bar;No debe haber importaciones del espacio de nombres global.
<?php
namespace Foo;
- use DateTime;
class Bar {
- public function __construct(DateTime $dateTime) {}
+ public function __construct(DateTime $dateTime) {}
}Las clases en el espacio de nombres global no pueden contener cortes principales.
<?php
- $x = new Foo();
+ $x = new Foo();
namespace Bar;
$y = new Baz();No debe haber tipos booleanos anulables. Riesgo: cuando se usa el nulo.
<?php
- function foo(?bool $bar) : ?bool
+ function foo(bool $bar) : bool
{
return $bar;
}No debe haber comentarios generados por PhpStorm.
<?php
- /**
- * Created by PhpStorm.
- * User: root
- * Date: 01.01.70
- * Time: 12:00
- */
namespace Foo;No debe haber parámetros aprobados por referencia en funciones. Riesgo: cuando confía en la referencia.
<?php
- function foo(&$x) {}
+ function foo($x) {} No debe haber concatenación superflua de cuerdas literal. Opciones de configuración:
allow_preventing_trailing_spaces ( bool ): si debe mantener la concatenación si evita tener espacios finales en la cadena; El valor predeterminado a falsekeep_concatenation_for_different_quotes ( bool ): si se debe concatenarse si se concatenaría con cita única y doble citada; El valor predeterminado a false <?php
- echo 'foo' . 'bar';
+ echo 'foobar'; Una lista de elementos escrita en una línea no puede contener una coma trasera.
<?php
- $x = ['foo', 'bar', ];
+ $x = ['foo', 'bar']; No debe haber comentarios inútiles.
<?php
/**
- * Class Foo
* Class to do something
*/
class Foo {
/**
- * Get bar
*/
function getBar() {}
} No debe haber llamadas inútiles dirname .
<?php
- require dirname(__DIR__) . "/vendor/autoload.php";
+ require __DIR__ . "/../vendor/autoload.php"; No puede haber comentarios generados por Doctrine Orm.
<?php
- /**
- * FooRepository
- *
- * This class was generated by the Doctrine ORM. Add your own custom
- * repository methods below.
- */
class FooRepository extends EntityRepository {}No debe haber paréntesis inútiles.
<?php
- foo(($bar));
+ foo($bar); Las funciones strlen y mb_strlen no deben compararse con 0. Riesgo: cuando la función strlen se anula.
<?php
- $isEmpty = strlen($string) === 0;
- $isNotEmpty = strlen($string) > 0;
+ $isEmpty = $string === '';
+ $isNotEmpty = $string !== ''; Los literales numéricos deben tener separadores configurados. Deprecido: use numeric_literal_separator en su lugar. Opciones de configuración:
binary ( bool , null ): si agrega, elimina o ignora los separadores en números binarios.; El valor predeterminado a falsedecimal ( bool , null ): si agrega, elimina o ignora los separadores en números decimales.; El valor predeterminado a falsefloat ( bool , null ): si agrega, elimina o ignora los separadores en números flotantes.; El valor predeterminado a falsehexadecimal ( bool , null ): si agrega, elimina o ignora los separadores en números hexadecimales.; El valor predeterminado a falseoctal ( bool , null ): si agrega, elimina o ignora los separadores en números octales.; El valor predeterminado a 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 Las afirmaciones de Phpunit deben tener argumentos esperados antes de uno real. Riesgo: cuando se sobrescriben los métodos originales de PhPunit.
<?php
class FooTest extends TestCase {
public function testFoo() {
- self::assertSame($value, 10);
+ self::assertSame(10, $value);
}
} Las afirmaciones de phpunit como assertCount y assertInstanceOf deben usarse sobre assertEquals / assertSame . Riesgo: cuando se sobrescriben los métodos originales de 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);
}
} Las funciones Phpunit fail , markTestIncomplete y markTestSkipped no deben ser seguidas directamente por return . Riesgo: cuando se sobrescriben los métodos originales de PhPunit.
<?php
class FooTest extends TestCase {
public function testFoo() {
$this->markTestSkipped();
- return;
}
} El estilo de matriz genérico debe usarse en PHPDOC. Deprecido: use phpdoc_array_type en su lugar.
<?php
/**
- * @return int[]
+ * @return array<int>
*/
function foo() { return [1, 2]; } Las anotaciones @var deben usarse correctamente en el código.
<?php
- /** @var Foo $foo */
$bar = new Foo();No debe haber parámetros superfluos en PHPDOC.
<?php
/**
* @param bool $b
- * @param int $i
* @param string $s this is string
- * @param string $s duplicated
*/
function foo($b, $s) {}Solo las anotaciones enumeradas están permitidas en PHPDOC. Opciones de configuración:
elements ( array ): lista de anotaciones para mantener en PHPDOC; Predeterminado es [] <?php
/**
* @author John Doe
- * @package foo
- * @subpackage bar
* @version 1.0
*/
function foo_bar() {} Ordenes todas las anotaciones @param en docblocks de acuerdo con la firma del método. Deprecido: use phpdoc_param_order en su lugar.
<?php
/**
+ * @param int $a
* @param int $b
- * @param int $a
* @param int $c
*/
function foo($a, $b, $c) {} Las anotaciones @param deben tener un tipo.
<?php
/**
* @param string $foo
- * @param $bar
+ * @param mixed $bar
*/
function a($foo, $bar) {} En PHPDOC, self debe usar el elemento de clase o interfaz en lugar del nombre de la clase en sí.
<?php
class Foo {
/**
- * @var Foo
+ * @var self
*/
private $instance;
} La anotación @var debe estar en una sola línea si es el único contenido.
<?php
class Foo {
- /**
- * @var string
- */
+ /** @var string */
private $name;
} list de tipos PHPDOC debe usarse en lugar de array sin un tipo de clave. Descargado: use phpdoc_list_type en su lugar.
<?php
/**
- * @param array<string>
+ * @param list<string>
*/
function foo($x) {}Los tipos PHPDOC no deben ser precedidos por un espacio en blanco, y deben ser sucedidos por un solo espacio en blanco.
- <?php /** @var array<int,string> */
+ <?php /** @var array<int, string> */ Los tipos de PHPDOC deben ser recortados.
<?php
/**
- * @param null | string $x
+ * @param null|string $x
*/
function foo($x) {} Convierte las anotaciones @var para assert llamadas cuando se usa en tareas.
<?php
- /** @var string $x */
$x = getValue();
+ assert(is_string($x)); Las propiedades del constructor deben promover si es posible. Opciones de configuración:
promote_only_existing_properties ( bool ): si promover solo las propiedades que se definen en la clase; El valor predeterminado a false <?php
class Foo {
- private string $bar;
- public function __construct(string $bar) {
- $this->bar = $bar;
+ public function __construct(private string $bar) {
}
}Las propiedades promocionadas deben declararse como de solo lectura. Riesgo: cuando se escribe la propiedad.
<?php class Foo {
public function __construct(
- public array $a,
- public bool $b,
+ public readonly array $a,
+ public readonly bool $b,
) {}
}Las declaraciones no seguidas de un punto y coma deben ser seguidas por un solo espacio. Opciones de configuración:
allow_linebreak ( bool ): si permitir la declaración seguido de LineBreak; El valor predeterminado a false <?php
- $foo = new Foo();
- echo$foo->bar();
+ $foo = new Foo();
+ echo $foo->bar(); Las declaraciones no precedidas por una ruptura de línea deben ser precedidas por un solo espacio.
<?php
- $foo =new Foo();
+ $foo = new Foo(); Una clase que implementa el método __toString() debe implementar explícitamente la interfaz Stringable .
<?php
- class Foo
+ class Foo implements Stringable
{
public function __toString()
{
return "Foo";
}
}Solicite una función o informe un error creando un problema.
Alternativamente, bifurca el repositorio, confirme sus cambios y asegúrese de que todo esté bien:
composer verifyy enviar una solicitud de extracción.