Доброго дня.
В
спецификации, в основном, упирают на либы сторонних поставщиков (т.е. на неймспейс Vendor), однако очевидно, что нативный код проекта должен иметь другой неймспейс. Дословно это так:
The fully qualified class name MUST have a top-level namespace name, also known as a “vendor namespace”.
При этом, должна быть как минимум одна директория, соответствующая этому самому "vendor namespace", что написано ниже.
A contiguous series of one or more leading namespace and sub-namespace names, not including the leading namespace separator, in the fully qualified class name (a “namespace prefix”) corresponds to at least one “base directory”.
Я вижу здесь удар по семантике. Допустим, у меня есть папка
includes или
libs, и папка
vendor (отдельно или внутри
libs, не суть важно). Соответственно, потребуется изобретать неймспейс для написанного мной кода, при этом, если определить его как "Classes" или "Libs", я буду ограничен только классами и библиотеками, ведь это следует из названия. Неймспейс "Includes" и прочие подобные бессмысленны, т.к. ничего не описывают. Добавить вдобавок к "Classes" еще такие неймспейсы, как "Interfaces" и "Traits", и соответствующие директории? Не слишком ли это избыточно, и не приведет ли к раскидыванию компонент на несколько не связанных друг с другом каталогов?
Как делают в реальных, серьезных, поддерживаемых проектах?
Заранее спасибо.