PHP CS Fixer 용 사용자 정의 고정 장치 세트.
PHP CS Fixer : 사용자 정의 수정 장치를 실행하여 설치할 수 있습니다.
composer require --dev kubawerlos/php-cs-fixer-custom-fixersPHP CS Fixer Configuration Register 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 패키지를 통해 설치되면 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"; 교리에 의해 생성 된 의견은 없을 수 있습니다.
<?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 ) : 16 진수로 분리기를 추가, 제거 또는 무시하는지 여부.; 기본값으로 falseoctal ( bool , null ) : 10 대 숫자로 분리기를 추가, 제거 또는 무시하든; 기본값으로 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 Asser는 실제 논쟁 이전에 논쟁을 예상했을 것입니다. 위험한 : 원래 phpunit 방법을 덮어 쓰는 경우.
<?php
class FooTest extends TestCase {
public function testFoo() {
- self::assertSame($value, 10);
+ self::assertSame(10, $value);
}
} assertCount 및 assertInstanceOf 와 같은 phpunit Asser는 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() {} 메소드 서명에 따라 모든 @param 주석을 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풀 요청을 제출하십시오.