Модули позволяют разделить ваше приложение на конкретные задачи. Часто мои большие приложения будут иметь модуль по умолчанию для пользователей и модуль администратора, содержащий все административные функции. Я использую структуру каталогов, рекомендованную в разделе Рекомендуемая структура проекта для приложений Zend Framework MVC -> Структура модуля документации Zend Framework.
Что касается вашего второго вопроса, то ответ и да, и нет. Если вы хотите воспользоваться функцией автозагрузки по умолчанию (загрузка Admin_Form_Settings из каталога admin/forms), вам понадобится загрузчик в каждом модуле. См. статью Мэтью Вейера О'Финни на странице Загрузка модулей в Zend Framework: что можно и чего нельзя делать для получения дополнительной информации. Вы также можете найти в Google и просмотреть сообщение Роба Аллена «Загрузка модулей в ZF 1.8 и выше».
Отвечая «нет» на ваш второй вопрос: один из методов, который мне нравится использовать и который не требует пустых загрузочных загрузок в каждом модуле, заключается в размещении всех ваших классов приложений в папке lib приложения и имитации структуры каталогов Zend Framework. Если мое приложение называется Example, я создам папку с именем Example в моем каталоге /lib. Моя регистрационная форма пользователя будет помещена в /lib/Example/Form и может называться UserRegistration.php. Мой класс будет называться Example_Form_UserRegistration. Для автоматической загрузки моей формы в файле Bootstrap.php потребуется следующее:
protected function _initAppAutoload() {
$autoloader = Zend_Loader_Autoloader::getInstance();
return $autoloader;
}
Мой application.ini будет включать строки
resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
resources.modules[] =
autoloaderNamespaces[] = "Example_"
Используя этот метод, вы должны иметь возможность автоматически загружать любой класс в /lib/Example в любом месте вашего приложения, не размещая пустые загрузочные файлы в каждом модуле.
ПРИМЕЧАНИЕ. Я пытался публиковать ссылки непосредственно на документы и на статью Роба Аллена, но, поскольку я новичок, мне была разрешена только одна ссылка. Приносим извинения за просьбу к элементам Google, которые должны быть ссылками.
person
Jeremy Kendall
schedule
11.05.2010