laravel — PHP интерфейсы и пространства имен

При разработке пакета или приложения существует ли передовая практика, стандарт FIG или соглашение сообщества о том, где размещать интерфейсы классов с учетом пространства имен?

Например, мы должны:

  • App\CarInterface
  • App\Cars\Ford
  • App\Cars\Toyota
  • App\Cars\Tesla

Или мы должны:

  • App\Cars\CarInterface
  • App\Cars\Ford
  • App\Cars\Toyota
  • App\Cars\Tesla

Я спрашиваю, должны ли интерфейсы быть размещены в тех же пространствах имен, что и их реализации.

0

Решение

В случае осветления все интерфейсы находятся в illuminate/contracts/<<FunctionGroup>>/<<BarInterface>>

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

Кстати, из Соглашения об именах PSR

Интерфейсы ДОЛЖНЫ иметь суффикс InterfaceНапример, Psr\Foo\BarInterface,

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]