Я хочу разместить модели вне каталога модулей в Zend Framework. Если быть точным, в папке / library
library/ models/ actors/ ActorsMapper.php Actor.php books/ BooksMapper.php Book.php
ВМЕСТО
application/ modules/ models/ actors/ ActorsMapper.php Actor.php books/ BooksMapper.php Book.php
Это делается для того, чтобы мне не приходилось создавать отдельную модель для каждого модуля, который я создаю. Какие конфигурации мне придется изменить? Если вам нужна дополнительная информация, пожалуйста, спросите.
Спасибо 🙂
Первый ответ работает, но я дам вам другой ответ, если вы хотите зарегистрировать автозагрузку в бутстрапе.
1) поместите папку «models» в библиотеку со всеми файлами Table.php.
Каждая модель / класс должна иметь:
class Model_Table extends Zend_Db_Table_Abstract{ ... }
2) В bootstrap.php поставили:
protected function _initAutoLoad() { // Add autoloader empty namespace $autoLoader = Zend_Loader_Autoloader::getInstance(); $resourceLoader = new Zend_Loader_Autoloader_Resource( array( 'basePath' => APPLICATION_PATH, 'namespace' => '', 'resourceTypes' => array( 'model' => array( 'path' => '../library/models/', 'namespace' => 'Model_' ), ), ) ); return $resourceLoader; }
Вот и все. Теперь вы можете использовать свои модели в контроллерах следующим образом:
$model = new Model_Table();
Если вы хотите использовать одни и те же модели для всех модулей, вы можете поместить их в приложения / приложения папки приложений
и это прекрасно работает так же, как когда у вас есть сеть без модулей.
Но если вы хотите иметь модели в библиотеке, вы можете поместить папку «models» в свой путь к библиотеке и автозагрузить ее.
В configs / application.ini Put:
autoloaderNamespaces.models = "Models_"
Затем вы можете использовать пространство имен «Models_» в своем веб-приложении
В контроллере:
$model = new Models_Table();
в любом случае, я рекомендую хранить модели папок в приложении / моделях пути
zend, который начинается с префикса, который зарегистрирован на нем. Если у вас есть библиотека в вашем пути включения, вы можете просто зарегистрировать «Модели», такие как пространство имен по умолчанию на автозагрузчике и назвать свой класс, например Models_Actors_Actor.