Как указать Zend Framework, где мои пользовательские классы - PullRequest
6 голосов
/ 22 марта 2010

У меня есть папка с пользовательскими классами в приложении ZF 1.10. Папка находится в / library. Как я могу сказать ZF, где они находятся? И application.ini, и index.php задают путь к библиотеке, но затем ZF не может найти файлы.

Спасибо

Ответы [ 4 ]

24 голосов
/ 03 января 2011

Мы часто сталкиваемся с проблемой написания собственных пользовательских функций или классов и места их размещения.

Таким образом, чтобы добавить собственный класс (или пользовательскую библиотеку), можно использовать пространства имен автозагрузчика Zend Framework.

Добавьте следующую строку в файл application.ini

autoloaderNamespaces.custom = "Custom_"

ИЛИ

autoloaderNamespaces[] = "Custom_"

Все пользовательские классы будут храниться в каталоге библиотеки.Создайте имя папки «Custom» (определено в application.ini) в каталоге библиотеки.

Классы будут иметь префикс «Custom_» при объявлении в файле (например, Custom_Test)

Теперь мы можем использовать этот класс как $test = new Custom_Test() в нашем приложении.

8 голосов
/ 23 марта 2010

Есть много возможных решений.Наиболее распространенным при использовании Zend Application является регистрация пространства имен в application.ini путем добавления:

autoloaderNamespaces[] = "Example_"

Другие решения:

  • Добавьте ваш каталог в include_path, используяset_include_path() (специальное решение)
  • Следуйте соглашениям об именах PEAR (чтобы было возможно разрешение пути)

Настройка автозагрузчика в Bootstrap.php:

protected function _initAutoloader()
{
    $autoloader = Zend_Loader_Autoloader::getInstance();
    $autoloader->registerNamespace("Example"); // or Example_
}

В конце концов, настроить модуль или автозагрузчик ресурсов , например.

$resourceLoader->addResourceTypes(array(
     'acl' => array(
        'path'      => 'acls/',
        'namespace' => 'Acl',
    ),
    'example' => array(
        'path'      => 'examples/',
        'namespace' => 'Example',
    ),        
));
1 голос
/ 22 марта 2010

Ознакомьтесь с этим старым учебным пособием по Zend Framework от Роба Аллена , в частности, на странице 4, где он рассказывает о загрузчике. Его новые учебные пособия, какими бы превосходными они ни были, похоже, полагаются на Zend Tool для создания приложений и приукрашивают их.

Однако меня смутило то, что вы упомянули, что папка, которую вы пытаетесь включить, это public / library. Если вы намеренно не захотите поделиться своим кодом со всем миром, я настоятельно рекомендую вам разместить его в другом месте ... если только у вас нет другой "публичной" папки , а не , доступной для общего доступа (в этом случае может захотеть переименовать его, чтобы избежать путаницы в будущем).

0 голосов
/ 06 мая 2014

Добавьте свою пользовательскую библиотеку в composer.json:

"autoload": {
"psr-0": {"Your": "vendor/My/library"}
},

и запустите обновление композитора

...