Есть ли стандартная структура проекта для проектов Composer, таких как Maven’s Стандартная структура каталогов в PHP?
Типичный макет таков:
src/
vendor/
.git
composer.json
composer.lock
Это минимальные ожидаемые стандарты, особенно для живой проектной среды. Если проект является библиотекой, то исходный каталог может быть опущен.
Лучший пример этого — стандартная версия Symfony2:
https://github.com/symfony/symfony-standard
После этого соглашение для внешних ресурсов и контроллера обычно:
web/
js/
css/
images/
index.php
Индексный файл в этом случае — ваш фронт-контроллер.
Это должно включать загрузчик в другом каталоге или инициализировать среду, используя конфигурацию в этом каталоге.
Для Symfony2 это app
каталог:
https://github.com/symfony/symfony-standard/tree/master/app
Надеюсь, что это поможет, учитывая, что это основано исключительно на моем опыте и наблюдениях.
Последний ответ — «да», основанный на сканировании каждого пакета, указанного на https://packagist.org и подсчет, какие каталоги используются подавляющим большинством пакетов, то есть то, что бессознательно согласовано большинством людей без координации:
https://github.com/php-pds/skeleton
Краткое резюме для каталогов:
If a package has a root-level directory for ...
... then it MUST be named:
command-line executables bin/
configuration files config/
documentation files docs/
web server files public/
other resource files resources/
PHP source code src/
test code tests/
Использование этого макета в значительной степени приводит ваш проект в соответствие с любым другим проектом, который вы, вероятно, используете в качестве зависимости. Обратите внимание, что вам не нужно иметь КАЖДЫЙ каталог, только те, которые на самом деле содержат файлы.