Как я могу настроить пространство имен по умолчанию и расположение модели для автозагрузчика в application.ini? - PullRequest
0 голосов
/ 14 июня 2011

Использование PHP 5.3 и Zend Framework 1.11.7 Я пытался настроить автозагрузчик для автоматической загрузки моих классов Model (для Zend_Db), которые находятся в каталоге по умолчанию application / models.

Я нашел следующее решение:

Я могу добавить следующую функцию в Bootstrap.php:

protected function _initLoader() 
{
    $loader = new Zend_Loader_Autoloader_Resource (array (
    'basePath' => APPLICATION_PATH,
    'namespace' => 'Default'));
    $loader -> addResourceType ( 'model', 'models', 'Model'); 
}  

это похоже на параметр, который должен быть легко установлен в application.ini. поэтому мой вопрос, есть ли какие-либо соответствующие директивы, которые я могу добавить в application.ini, которые выполняют ту же задачу, что и моя функция?

обновление

после установки директивы appnamespace, мне все еще нужно добавить следующую функцию:

protected function _initLoader() 
{    
    $loader = new Zend_Loader_Autoloader_Resource (array (
    'basePath' => APPLICATION_PATH));
    $loader -> addResourceType ( 'model', 'models', 'Model'); 
}

или он не найдет мои классы моделей.

Единственное отличие состоит в том, что я удалил атрибут namespace.

какие-либо другие атрибуты, которые я могу добавить, чтобы полностью удалить эту функцию?

спасибо! :)

Kfir

Ответы [ 2 ]

1 голос
/ 14 июня 2011

В вашем application.ini вы должны установить

appnamespace = "Application"
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"

Пространство имен приложений - это префикс, который вы используете для своих моделей, поэтому, если ваша модель имеет значение «Default_Model_User», тогда пространство имен приложений будет «По умолчанию», если ваша модель - «Application_Model_User», то пространство имен приложений будет «приложение»

Эти две директивы должны отсортировать вашу автозагрузку для приложения по умолчанию

Вы также можете установить его в своем загрузчике, вам нужно использовать Zend_Application_Module_AutoLoader:

protected function _initDefaultModuleAutoloader()
{
    $this->_resourceLoader = new Zend_Application_Module_Autoloader(array(
        'namespace' => 'Application',
        'basePath'  => APPLICATION_PATH,
    ));
}
1 голос
/ 14 июня 2011

Поместите следующее в ваше application.ini

appnamespace = "MyNamespace"

Затем он загрузит файл в каталоге вашего приложения / models с классом MyNamespace_Model_MyModel.

...