Есть ли PSR-4 только для небольшой упаковки?
Нет, PSR-4 предназначен не только для небольших упаковок. Стандартные структуры, такие как Zend и Symfony, тоже используют его.
PSR-4 описывает спецификацию для автозагрузки классов из путей к файлам. Он не делает никаких предположений о размере вашего проекта. Он полностью совместим и может использоваться в дополнение к любой другой задаче автозагрузки. Это означает, что вы также можете использовать PSR-0.
Является ли PSR-0 лучше для этого пакета CMS, чем PSR-4?
Это зависит. Если ваша система использует пространства имен, чтобы избежать столкновений классов с другими поставщиками, то правильный выбор PSR-4. Но в целом: автозагрузчику все равно, он просто ест уроки PSR-0 и PSR-4 на завтрак.
Если вы действительно хотите знать: выполните тест A/B и сравните скорость автозагрузки.
Является ли моя структура каталогов хорошей?
Это зависит: если вы и пользователи вашей CMS или Framework похожи на структуру, то да. Если вы работаете с Composer для управления зависимостями, то, вероятно, lib\ framework
- мертвая лошадь, потому что все пакеты живут внутри папки vendor
. Если вы разрабатываете CMS, то структура является зависимой от поставщика.
Должны ли интерфейсные и абстрактные классы иметь свой собственный каталог?
Я предлагаю сохранить интерфейс или абстрактный базовый класс в том же каталоге.
Это сохраняет одну папку,) только для одного или двух файлов.
Зависит, если вы используете пространство имен или нет; хотя для большинства современных пакетов/библиотек рекомендуется использовать пространство имен, чтобы избежать риска столкновений в именах классов. –
@MarkBaker Я использую пространство имен. Имя пространства имен, которое я даю, такое же, как в каталоге. Итак, лучше ли использовать PSR-0 или PSR-4? –
Если вы используете пространства имен, используйте PSR-4 –