Я пытаюсь выяснить структуру каталогов для веб-сайта php.
Веб-сайт будет использовать:
- очень простая фреймворческая структура MVC (а именно MinimalMVC, но я ищу универсальное решение, поэтому структура может, вероятно, игнорироваться)
- композитор для управления зависимостями PHP
- SCSS для стилизации
- gulp для компиляции SCSS (для сборки dev), а также для минимизации и конкатенации вывода JS и CSS, а также для минимизации изображений и т.д. (только для сборки развертывания).
- Travis CI для материалов CI
Итак, после много размышлений и планирования и рассмотрения проблем с различными структурами каталогов, которые я придумал, я все еще не могу найти то, что соответствует моим критериям:
-
gulp deploy
должен иметь возможность создавать папку развертывания, которая при вводе в каталог/var/www/html/
на сервере Apache должна работать Just Work TMПримечание: MinimalMVC (а также CodeIgniter и другие аналогичные структуры) требуют своего файла
index.php
в корневом каталоге с папкойapp
иsys
в том же каталоге -
Поскольку PHP никогда не обрабатывается процессом сборки, было бы здорово, если бы ненужное копирование файлов
src/**/*.php
во что-то вродеbuild/**/*.php
было бы невозможно. В принципе, часть PHP не поддерживает gulp, я бы предпочел, чтобы она осталась без изменений gulp.
Теперь мои мысли немного беспорядочны, потому что я слишком много думал об этом, поэтому простите меня, что этот вопрос тоже немного беспорядок, но основной вопрос заключается в том, как должна структура каталогов смотреть?
Идея:
.
|-- composer.json
|-- gulpfile.js
|-- package.json
|-- src
| |-- app
| | |-- controllers
| | |-- models
| | `-- <other_framework_stuff>
| |-- assets
| | |-- css
| | |-- img
| | |-- js
| | `-- raw
| | `-- scss
| |-- index.php
| `-- sys
| `-- <framework_stuff>
|-- test
`-- vendor
`-- <composer_stuff>
В этой структуре разработчики работают только в каталоге /src
. SCSS скомпилируется из /src/assets/raw/scss/
в src/assets/css
. Таким образом, PHP остается удаленным из процесса сборки. При попытке сгенерировать каталог deploy
папка src будет скопирована, каталог /src/assets/raw/
(поэтому no /build/assets/raw
) не существует, а готовые/развертываемые CSS, JS и изображения находятся в /build/assets/
.
Первая проблема с этим решением - это странный каталог src/assets/raw
, который кажется уродливым imho. Вторая проблема - это каталог /vendor
. Это означает, что php ссылается на материал извне src. Поэтому, если /src/index.php
заботится об этом, он будет включать ../vendor/autoload.php
. Тогда это означало бы, что один и тот же код будет скопирован в /build/index.php
. И тогда /build/
не будет запущен, просто отбросив его в /var/www/html
, если только vendor
не находится в /var/www
, что кажется странным.
Там много других вещей, о которых я думал, но все это кажется уродливым каким-то образом. Чтобы избежать слишком долгого вопроса, я остановлюсь здесь.
Помогите, пожалуйста. Должен ли я просто положить vendor
в /src/
с помощью vendor-dir
в composer.json
? (Я знаю, eww.) Какую структуру каталогов я должен использовать?