Как я могу удалить префикс «Application_Model_» из имен классов модели Zend Framework? - PullRequest
6 голосов
/ 13 августа 2010

У меня есть новый проект ZF 1.10 (просто модуль по умолчанию, а не несколько модулей), и мне необходимо добавить префикс имен классов моих моделей к «Application_Model_», чтобы их можно было выбрать из каталога application / models.

Как я могу получить больше контроля над этим?Например, я хочу сам именовать классы модели - например, как «Blah_ClassName» или, возможно, даже просто «ClassName».

(я знаю, что мог бы использовать set_include_path () для достижения последнего, но это не очень «Zend»-подобно ". Я думаю, что нужны какие-то изменения в автозагрузчике - но как лучше это сделать?)

Ответы [ 2 ]

8 голосов
/ 13 августа 2010

Вы ищете Автозагрузчики ресурсов .

В вашей начальной загрузке:

protected function _initResourceLoader()
{
    $resourceLoader = new Zend_Loader_Autoloader_Resource(array(
        'namespace' => '',
        'basePath'  => APPLICATION_PATH,
    ));
    $resourceLoader->addResourceType('model', 'models/', 'Model');
    $resourceLoader->addResourceType('form', 'forms/', 'Form');
    $resourceLoader->addResourceType('service', 'services/', 'Service');

    return $resourceLoader;
}

Для загрузки ресурсов:

$form    = new Form_Article    // loads from APPLICATION_PATH . /forms/Article.php
$model   = new Model_Article   // loads from APPLICATION_PATH . /models/Article.php
$service = new Service_Article // loads from APPLICATION_PATH . /services/Article.php
1 голос
/ 13 августа 2010

Чтобы автозагрузчик работал, вам нужно сделать 2 вещи, добавить путь к вашему include_path и также указать пространство имен автозагрузчика:

Autoloadernamespaces[] = "YourNamespace_"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...