Zend Framework 2, включая пользовательскую библиотеку

Моя структура каталогов выглядит так:

  • C: \ Workspaces \ Zend
  • c: \ Workspaces \ Custom library

Пользовательская библиотека – это общая библиотека, которая используется в других приложениях. Он не использует пространства имен, а только подчеркивает стиль.

Я загрузил ZF2-Restful-Module-Skeleton, который я намерен использовать в качестве успокоительного сервера. В InfoController у меня есть этот код:

namespace Main\Controller; use Zend\Mvc\Controller\AbstractRestfulController; class InfoController extends AbstractRestfulController { public function getList() { $data = array( 'phone' => '+30123456789', 'email' => 'email@domain', ); $Res = new CL_Res_Chain_Mutable(); return $data; } } 

Сообщение об ошибке:

Неустранимая ошибка: Class 'Main \ Controller \ CL_Res_Chain_Mutable' не найден в C: \ Workspaces \ Zend \ module \ Main \ src \ Main \ Controller \ InfoController.php

Очевидно, мне нужно добавить эту настраиваемую библиотеку в мое приложение Zend, но Im «little» потерял здесь, я действительно не знаю, как это сделать. У меня есть решения для пары, но ни один из них не выглядит таким.

Кроме того, у меня есть другая библиотека в папке c:\Workspaces\Custom library 2 , которая имеет (среди других файлов) файл (класс) D.php, который я использовал как D :: dump ($ data);

Как я могу заставить его работать в моем приложении Zend?

Solutions Collecting From Web of "Zend Framework 2, включая пользовательскую библиотеку"

Для загрузки классов библиотеки необходимо настроить StandardAutoloader . Самый простой способ – модифицировать метод Module::getAutoloaderConfig() модуля приложения, чтобы он выглядел примерно так:

 public function getAutoloaderConfig() { return array( 'Zend\Loader\StandardAutoloader' => array( 'namespaces' => array( __NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__, ), 'prefixes' => array( 'CL' => 'c:\\Workspaces\\Custom library/CL', 'D' => 'c:\\Workspaces\\Custom library 2/D', ), ), ); } 

Я добавил ключ prefixes а затем перечислил имя префикса и где его найти на диске. В документации на стандартный автозагрузчик содержится более подробная информация.

Если вы работаете с Zend Skeleton Application, вы также можете просто добавить эти пространства имен в файл init_autoloader.php .

Пространство имен вашего класса – Main\Controller . Если вы создадите новый класс здесь, new CL_Res_Chain_Mutable() php будет загружать его относительно текущего пространства имен Main\Controller\CL_Res_Chain_Mutable . Ваш класс не является классом с именами, поэтому вам нужно загрузить его из корня. Просто положите \ перед new \CL_Res_Chain_Mutable() .

По умолчанию ваше приложение будет использовать стандартный Autloader (PSR-0). Это найдет ваши файлы на основе пространств имен и именования, которые используются ZF2. ZF2 позволит вам регистрировать несколько автозагрузчиков, поэтому вы можете использовать разные стратегии, что вам нужно будет сделать, вот пример:

module.php

 /** * Get autoloader config * * @return array */ public function getAutoloaderConfig() { return array( 'Zend\Loader\ClassMapAutoloader' => array( // File containing class map key/value pairs __DIR__ . '/library/autoloader_classmap.php', // Or provide an array with the class map instead... array( 'Application\Bootstrap' => __DIR__ . '/application/Bootstrap.php', 'CL_Res_Chain_Mutable' => __DIR__ . '/library/pathhere/Mutable.php', ), ), 'Zend\Loader\StandardAutoloader' => array( 'namespaces' => array( __NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__, ), ), ); } 

Эта настройка будет использовать команду ZF2, чтобы сначала проверить карту класса, если она не может найти то, что она ищет, она вернется к стандартному автозагрузчику.

http://framework.zend.com/manual/2.0/en/modules/zend.loader.class-map-autoloader.html