В веб-проекте MVC у меня есть следующая структура:
mymvc/ -> Project root.
public/ -> Document root. The only one folder accessible from web.
assets -> Client-side assets. NOT ONLY for global themes and libraries, BUT ALSO for each specific "view" controlled by the "src/Application" components.
css/
js/
images/
...
index.php -> Application entry point.
src/ -> UI layer rules.
Application/
Controller/
View/
ViewModel/
Dispatcher/ -> Application dispatching - route matching, dispatching to the specified controller, etc.
... -> Other classes used by the components in the "src/Application" folder.
templates/ -> Layout and template files.
Примечание. Все компоненты модели домена (сущности, репозитории, данные, службы и т.д.) Находятся в папке вне каталога mymvc
, так что они также могут быть доступны любому другому приложению.
Я подумал - на самом деле - о выполнении следующих двух шагов:
- Чтобы переместить каталог
templates
папкуsrc/Application
. - Чтобы переместить каталог
assets
вsrc/Application
, создайте конфигурацию alias/assets/
в веб-сервере (Apache) - указав на перемещенную папку и позвольте ей получить полный доступ из внешнего мира.
Используемые во всем мире активы - такие как CSS темы, или JS библиотеки кодов или фоновых изображений, или и т.д. - все еще может оставаться находится в public
каталоге - явно не в папке с именем или псевдонимом assets
.
Я действительно нахожу два шага очень хорошей идеей, потому что, как я вижу, обе папки содержат ресурсы, связанные со структурой из src/Application
. Итак, вместо того, чтобы иметь что-то вроде этого:
-
src/Application/Controller/AboutUs.php
-
public/assets/js/AboutUs.js
-
templates/AboutUs/[multiple-layout-and-template-files]
,
структура, подобная следующей, выглядит намного лучше:
-
src/Application/Controller/AboutUs.php
-
src/Application/assets/js/AboutUs.js
-
src/Application/templates/AboutUs/[multiple-layout-and-template-files]
,
Но после изучения многих веб-фреймворков я понял, что все они полностью разделяют две папки (templates
и assets
) от папки приложения.
Поэтому я хотел бы спросить: есть ли какие-то конкретные причины, почему мое предлагаемое перемещение этих двух каталогов не может или не должно быть сделано?
Спасибо.