Говорит ли PSR-12 что-нибудь о том, как импорт пространства имен и псевдонимы должны быть сгруппированы и отсортированы?

#php #php-7 #psr-12

#php #php-7 #psr-12

Вопрос:

Я работаю над автоматизацией качества кода с phpmd phpcs phpcpd помощью инструментов и . Для анализатора кода установлено значение --standard=PSR12 .

Я не смог найти никаких подробностей или рекомендаций в отношении того, как следует определять импорт и псевдонимы пространства имен:

  • группировка с помощью фигурных скобок или определение каждого из них отдельным способом (что на данный момент является моим предвзятым предложением)
  • Сортировка по алфавиту

Например:

 use FooBar{ Lorem, Ipsum, Dolor };
  

против:

 use FooBarDolor;
use FooBarIpsum;
use FooBarLorem;
  

Если нет стандартной рекомендации, я собираюсь установить внутреннее правило в моей команде, но если оно есть, я с радостью подчинюсь ему.

Комментарии:

1. Если это не упоминается в их руководстве по стандарту кода (на которое вы ссылались), то у них нет мнения об этом.

2. Вы могли бы сделать правилом в своей команде, что все файлы PHP должны быть переформатированы с помощью автоматических инструментов (например, PhpStorm), которые должны удовлетворять PSR-12. Вероятно, линтер мог бы это тоже проверить — я бы не увидел никакой ценности в том, чтобы идти дальше и дальше.

Ответ №1:

Существует несколько правил, касающихся пространств имен, но ни одно из них явно не требует порядка. Однако это указано в отношении глубины при их объявлении:

Составные пространства имен с глубиной более двух НЕ ДОЛЖНЫ использоваться. Поэтому ниже приведена максимально допустимая глубина компаундирования:

 use VendorPackageSomeNamespace{
    SubnamespaceOneClassA,
    SubnamespaceOneClassB,
    SubnamespaceTwoClassY,
    ClassZ,
};
  

И следующее не будет разрешено:

 use VendorPackageSomeNamespace{
    SubnamespaceOneAnotherNamespaceClassA,
    SubnamespaceOneClassB,
    ClassZ,
};
  

Для общего правила, если это явно не указано, то стандарта нет. Либо работает.

Вы можете прочитать больше о существующих правилах здесь:

https://www.php-fig.org/psr/psr-12/