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

Раньше я использовал только сторонние библиотеки, которые используют пространства имен вместе с Zend Framework 2. Теперь мне нужно использовать библиотеку , которая не использует пространства имен, и я не могу заставить ее работать. Я установил его через Composer, и он установлен в каталог vendor . Я пытаюсь использовать его следующим образом:

$obj = new \SEOstats();

Результатом является фатальная ошибка, указывающая, что класс не найден. Я попытался вручную настроить StandardAutoloader , но пока не повезло. Я думал, что автозагрузка будет сделана для меня автоматически при установке через Composer, но я думаю, что это не так без пространств имен? Я не видел ссылки на библиотеку в файлах автозагрузки, которые генерировал Composer. Думаю, мне нужно сделать это вручную, но как?

Заранее спасибо.

Вы можете использовать файлы и ключи класса .

В качестве примера рассмотрим этот composer.json:

 { "require": { "vendor-example/non-psr0-libraries": "dev-master", }, "autoload":{ "files": ["vendor/vendor-example/non-psr0-libraries/Library01.php"] } } 

Используя ключ файлов, вы можете использовать

 $lib = new \Library01(); 

Используйте ключ classmap, когда вам нужно загрузить несколько файлов, содержащих классы. Композитор.json был бы:

 { "require": { "vendor-example/non-psr0-libraries": "dev-master", }, "autoload":{ "classmap": ["vendor/vendor-example/non-psr0-libraries/"] } } 

Composer будет сканировать файлы .php и .inc внутри указанного каталога, настраивая автозагрузчик для каждого файла / класса.

Для получения дополнительной информации вы можете проверить http://getcomposer.org/doc/04-schema.md#files и http://getcomposer.org/doc/04-schema.md#classmap

Если вы находитесь под пространством имен при создании объекта, вы должны использовать «\» (корневое пространство имен), иначе вы будете использовать класс Library01 под текущим пространством имен (если он у вас есть, если у вас его нет, получить сообщение об ошибке).