В Zend Framework вы можете организовать свое приложение в модули, которые очень хорошо соответствуют вашим потребностям. К сожалению, в документе недостаточно подчеркивается важность этой концепции и то, как вы должны ее реализовать с самого первого дня.
Модули позволяют вам перегруппировать в одной папке модуля все, что связано только с этим модулем, и таким образом изолировать «части» вашего приложения в логические группы.
В вашем случае это были бы «назад» и «спереди», но вы могли бы также иметь модуль «форум» или, скажем, модуль «магазин».
С точки зрения URL, модульной структурой по умолчанию является маршрутизация example.com/module/controller/action, но с использованием маршрутов имени хоста вы также можете указывать www.example.com на модуль front и admin.example.com указывают на ваш бэкэнд.
Взгляните на плохой раздел документации о модулях , и не паникуйте, вам не придется переименовывать все, если вы переместите свои текущие контроллеры, представления и модели в модуль "по умолчанию" .
Существует другая альтернатива, которая может хорошо подходить для логики бэкэнда / внешнего интерфейса, но не если вы хотите разделить код на более логичные части (форум, блог, магазин, ...). Вы просто создаете вторую папку приложения (вы бы назвали «frontend») рядом с папкой «application» и второй общедоступный каталог (где вы можете использовать символическую ссылку на вашу папку ресурсов, если вы используете те же самые), и другое пространство имен.
Чтобы иметь возможность автоматически загружать классы «Application_» в коде вашего внешнего интерфейса, просто добавьте и настройте Module Autoloader в своем загрузочном интерфейсе внешнего интерфейса. Код довольно прост:
//in your frontend/Bootstrap.php
public function _initAutoloader(){
new Zend_Loader_Autoloader_Resource( array(
'namespace' => 'Application_',
'path' => realpath(dirname(__FILE__).'/../application'
)
);
}
Для файла конфигурации application.ini
я бы порекомендовал вместо дублирования создать раздел [frontprod : production]
, в котором вы переопределяете настройки вашего бэкэнда (и соответствующий [frontdev: frontprod]
для ваших локальных настроек).
Надеюсь, это помогло. По всем темам, представленным здесь, можно сказать так много, что вы должны сначала взглянуть на это, а затем прокомментировать этот ответ более конкретными вопросами о проблемах, с которыми вы можете столкнуться, и я расширю ответ.