Стандартное расположение каталогов проекта PHP Composer

Есть ли стандартная структура проекта для проектов Composer, таких как Maven’s Стандартная структура каталогов в PHP?

1

Решение

Типичный макет таков:

src/
vendor/
.git
composer.json
composer.lock
  • В целях совместимости файлы Git и Composer должны находиться в корне проекта.
  • Исходный каталог должен быть корнем исходных файлов, начиная с пространства имен верхнего уровня ваших классов.
  • Каталог vendor должен содержать все сторонние библиотеки, импортированные через composer.

Это минимальные ожидаемые стандарты, особенно для живой проектной среды. Если проект является библиотекой, то исходный каталог может быть опущен.

Лучший пример этого — стандартная версия Symfony2:
https://github.com/symfony/symfony-standard

После этого соглашение для внешних ресурсов и контроллера обычно:

web/
js/
css/
images/
index.php

Индексный файл в этом случае — ваш фронт-контроллер.
Это должно включать загрузчик в другом каталоге или инициализировать среду, используя конфигурацию в этом каталоге.

Для Symfony2 это app каталог:
https://github.com/symfony/symfony-standard/tree/master/app

Надеюсь, что это поможет, учитывая, что это основано исключительно на моем опыте и наблюдениях.

1

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

Последний ответ — «да», основанный на сканировании каждого пакета, указанного на 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/

Использование этого макета в значительной степени приводит ваш проект в соответствие с любым другим проектом, который вы, вероятно, используете в качестве зависимости. Обратите внимание, что вам не нужно иметь КАЖДЫЙ каталог, только те, которые на самом деле содержат файлы.

1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector