مجموعة من المثبتات المخصصة لمثبت PHP CS.
PHP CS Fixer: يمكن تثبيت المثبتات المخصصة عن طريق التشغيل:
composer require --dev kubawerlos/php-cs-fixer-custom-fixersفي مثبتات تسجيل تكوين المثبت PHP CS واستخدمها:
<?php
return (new PhpCsFixerConfig())
+ ->registerCustomFixers(new PhpCsFixerCustomFixersFixers())
->setRules([
'@PSR2' => true,
'array_syntax' => ['syntax' => 'short'],
+ PhpCsFixerCustomFixersFixerNoLeadingSlashInGlobalNamespaceFixer::name() => true,
+ PhpCsFixerCustomFixersFixerPhpdocNoSuperfluousParamFixer::name() => true,
]);php-cs-fixer/shim ، قد تكون هناك حاجة إلى حاجة إلى bootstrap لتحميل فئات 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
- ) {
- }
+ ) {}
} يجب أن تتطابق أسماء مزودي البيانات مع اسم الاختبار. DEPRECATED: استخدم 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 . DEPRECATED: استخدم 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 {}
} يجب أن يكون مقدمو البيانات ثابتًا. DEPRECATED: استخدم 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
- )
- {
- }
+ ) {} يجب الرجوع إلى الفئات التي يتم تعريفها داخليًا بواسطة امتداد أو جوهر مع الحالة الصحيحة. DEPRECATED: استخدم 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];
}يجب أن تحتوي التعليقات المتعددة أو PHPDOCs على خط فتح وإغلاق بدون محتوى إضافي.
<?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();يجب ألا يكون هناك أنواع منطقية قابلة للبطولة. محفوفة بالمخاطر: عندما يتم استخدام 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 ): ما إذا كان يجب الحفاظ على التسلسل إذا كان يمنع وجود مساحات زائدة في السلسلة ؛ الإعدادات الافتراضية إلى 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"; لا يمكن أن يكون هناك أي تعليقات تم إنشاؤها بواسطة عقيدة 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 !== ''; يجب أن يكون لدى حرفيات رقمية فواصل تكوينها. DEPRECATED: استخدم numeric_literal_separator بدلاً من ذلك. خيارات التكوين:
binary ( bool ، null ): ما إذا كانت إضافة أو إزالة أو تجاهل الفواصل بأرقام ثنائية ؛ الإعدادات الافتراضية إلى falsedecimal ( bool ، null ): ما إذا كان إضافة أو إزالة أو تجاهل الفواصل بأرقام عشرية. الإعدادات الافتراضية إلى falsefloat ( bool ، null ): ما إذا كانت إضافة أو إزالة أو تجاهل الفواصل بأرقام تعويم. الإعدادات الافتراضية إلى falsehexadecimal ( bool ، null ): ما إذا كانت إضافة أو إزالة أو تجاهل الفواصل بأرقام سداسية عشرية ؛ الإعدادات الافتراضية إلى falseoctal ( bool ، null ): ما إذا كانت إضافة أو إزالة أو تجاهل الفواصل بأرقام ثماني ؛ الإعدادات الافتراضية إلى 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 قد توقعت حجة قبل الحجة الفعلية. محفوفة بالمخاطر: عندما تتم كتابة طرق phpunit الأصلية.
<?php
class FooTest extends TestCase {
public function testFoo() {
- self::assertSame($value, 10);
+ self::assertSame(10, $value);
}
} يجب استخدام تأكيدات phpunit مثل assertCount و assertInstanceOf على 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);
}
} يجب ألا تتبع وظائف 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 Class أو عنصر الواجهة بدلاً من اسم الفصل نفسه.
<?php
class Foo {
/**
- * @var Foo
+ * @var self
*/
private $instance;
} يجب أن يكون التعليق التوضيحي @var على سطر واحد إذا كان المحتوى الوحيد.
<?php
class Foo {
- /**
- * @var string
- */
+ /** @var string */
private $name;
} يجب استخدام list نوع PHPDOC بدلاً من 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وتقديم طلب سحب.