Zend автоматически загружает разные пространства имен из одного каталога?

У меня есть каталог моделей в моем проекте, и я хотел бы сохранить там классы/файлы с разными пространствами имен. Пример:

models/User.php with classname Model_User
models/Table_User.php with classname Model_Table_User

Для первого пространства имен у меня есть это в bootstrap.php

$resourceLoader->addResourceTypes(array(
    'model' => array(
    'namespace' => 'Model',
    'path' => 'models'
    )
));

Я не могу понять, как добавить второе пространство имен, чтобы оно обнаруживало файлы, начинающиеся с Table_ Есть идеи?

На данный момент я добавил второй каталог с именем «таблицы», но это сбивает с толку, потому что у меня есть имя каждой модели дважды (один раз в каталоге моделей и один раз в каталоге таблиц)


person Community    schedule 22.12.2010    source источник


Ответы (2)


Это то, чем я занимаюсь сам.
У меня "Model_" находится в "{APPLICATION_PATH}/models/", а "DbTable_" - в "{APPLICATION_PATH}/models/dbtables/".


$resourceLoader->addResourceTypes(array(
    'model' => array(
    'namespace' => 'Model_',
    'path' => APPLICATION_PATH.'/models/'
    ),
    'dbtable' => array(
    'namespace' => 'DbTable_',
    'path' => APPLICATION_PATH.'/models/dbtables/'
));

Конечно, вы должны изменить это в соответствии с вашими именами классов и структурой папок. APPLICATION_PATH определен в вашем index.php, но я не помню, содержит ли он завершающую косую черту, так что проверьте это на всякий случай. (Сейчас я не за компьютером, поэтому не могу проверить...)

Просто как тот! :)

person mapsi    schedule 26.12.2010
comment
Но мне все равно нужно дважды использовать одно и то же имя файла в этом примере, верно? Больше всего меня раздражает то, что повторяющиеся имена файлов могут сбивать с толку... Спасибо за ваше предложение! - person ; 27.12.2010
comment
У вас могут быть повторяющиеся имена файлов (например, User.php), но путь будет другим. Это неплохая практика. Вы когда-нибудь проверяли внутренности ZF? Он полон абстрактных классов в файлах Abstract.php. - person mapsi; 27.12.2010

Это из-за _ в Table_User. Автозагрузчик, вероятно, ищет:

models/Table/User.php

Попробуйте переименовать файл в

TableUser.php

И класс для:

Model_TableUser

Или создайте папку Table и поместите туда User.php.

person Iznogood    schedule 23.12.2010