Раньше я использовал только сторонние библиотеки, которые используют пространства имен вместе с 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 под текущим пространством имен (если он у вас есть, если у вас его нет, получить сообщение об ошибке).