При разработке пакета или приложения существует ли передовая практика, стандарт FIG или соглашение сообщества о том, где размещать интерфейсы классов с учетом пространства имен?
Например, мы должны:
App\CarInterface
App\Cars\Ford
App\Cars\Toyota
App\Cars\Tesla
Или мы должны:
App\Cars\CarInterface
App\Cars\Ford
App\Cars\Toyota
App\Cars\Tesla
Я спрашиваю, должны ли интерфейсы быть размещены в тех же пространствах имен, что и их реализации.
В случае осветления все интерфейсы находятся в illuminate/contracts/<<FunctionGroup>>/<<BarInterface>>
Но если вы думаете, что вам будет сложнее поддерживать / находить соответствующий интерфейс, воспользуйтесь вторым вариантом. Я вижу много проектов, которые организованы таким образом (включая мой).
Кстати, из Соглашения об именах PSR
Интерфейсы ДОЛЖНЫ иметь суффикс
Interface
Например,Psr\Foo\BarInterface
,
Других решений пока нет …