Глядя на исходники библиотеки ZF, мне хотелось использовать такое же именование классов внутри папки application. Я выбрал такой путь в котором папка application содержит в себе все классы, необходимые для работы проекта. Таким образом, у меня в папке application появились папки plugins, forms, models, controllers.
Как же правильно сделать так, чтобы все нормально функционировало и в файле Articles.php был класс Model_Articles вместо класса Articles? Это нужно, чтобы избавиться от старого метода автозагрузчика, который запускался следующим образом в файле Bootstrap.php и подключал все пространства имен (зачастую это совершенно излишне):
protected function _initAutoload() { $loader = Zend_Loader_Autoloader::getInstance(); $loader->setFallbackAutoloader(true); }В этом случае на помощь нам может прийти следующий метод нашего класса Bootstrap:
protected function _initAutoload() { $loader = Zend_Loader_Autoloader::getInstance(); $moduleLoader = new Zend_Application_Module_Autoloader(array( 'namespace' => '', 'basePath' => APPLICATION_PATH, )); return $moduleLoader; }Таким образом мы создаем модуль автолоадера для загрузки файлов именно нашего приложения, то есть префикс неймспэйса у нас получается пустым и корневая директория - APPLICATION_PATH. Это позволит создавать классы (см. структуру директорий выше) с именами Model_Ratings, Model_Articles. А также уходить вглубь директорий, например положить класс Model_Row_Article в директорию application/models/Row/Article.php В стиле ZF? По-моему, вполне :)
Комментариев нет:
Отправить комментарий