"Class not found" после установки библиотеки через композер

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
baydikov
Сообщения: 112
Зарегистрирован: 2012.11.05, 15:52

"Class not found" после установки библиотеки через композер

Сообщение baydikov »

Добрый день!
Я добавил в composer.json новый пакет и установил библиотеку.
Но сейчас мне приходится постоянно делать require(), иначе получаю ошибку "Class not found".
Это нормально, или все таки классы, установленные через композер должны сами подгружаться ?
mickgeek
Сообщения: 957
Зарегистрирован: 2014.05.31, 20:50
Откуда: Санкт-Петербург
Контактная информация:

Re: "Class not found" после установки библиотеки через композер

Сообщение mickgeek »

Должны сами. Импорт через use делаете? Нужно больше информации.
Аватара пользователя
futbolim
Сообщения: 2051
Зарегистрирован: 2012.07.08, 19:28

Re: "Class not found" после установки библиотеки через композер

Сообщение futbolim »

должны сами подгружаться
baydikov
Сообщения: 112
Зарегистрирован: 2012.11.05, 15:52

Re: "Class not found" после установки библиотеки через композер

Сообщение baydikov »

Код: Выделить всё

use ApiFactory; 
В функции вызываю метод

Код: Выделить всё

ApiFactory::createNewApiConnection( 
Получаю ошибку

Код: Выделить всё

Class 'ApiFactory' not found
baydikov
Сообщения: 112
Зарегистрирован: 2012.11.05, 15:52

Re: "Class not found" после установки библиотеки через композер

Сообщение baydikov »

Может быть в библиотеке должен быть реализовать autoload ? Потому, что его там нет
Аватара пользователя
Neuromance
Сообщения: 716
Зарегистрирован: 2011.09.06, 13:04

Re: "Class not found" после установки библиотеки через композер

Сообщение Neuromance »

use ApiFactory; - это что? Где здесь путь до класса?
mickgeek
Сообщения: 957
Зарегистрирован: 2014.05.31, 20:50
Откуда: Санкт-Петербург
Контактная информация:

Re: "Class not found" после установки библиотеки через композер

Сообщение mickgeek »

Скиньте ссылку на расширение.
baydikov
Сообщения: 112
Зарегистрирован: 2012.11.05, 15:52

Re: "Class not found" после установки библиотеки через композер

Сообщение baydikov »

Библиотека из закрытого репозитория на гитхабе.
Может я что то путаю, в том как происходит импорт, я правильно понимаю, что :
1. при исспользовании композера, в папке vendor/composer, есть SPL autoload который делает require() нужных файлов с классами.
2. use в классах, которые мы пишем, просто служит для импорта пространств имен.

Или я ошибаюсь?
У меня такое чувство, что мой файл с классом не был подключен через require(), потому, что когда я его подключаю руками через require(), все начинает работать
lynicidn
Сообщения: 2222
Зарегистрирован: 2014.05.24, 15:12

Re: "Class not found" после установки библиотеки через композер

Сообщение lynicidn »

1. автолоад не основан на телепатии пространств имен
2. именно, что пространство имен
Аватара пользователя
Neuromance
Сообщения: 716
Зарегистрирован: 2011.09.06, 13:04

Re: "Class not found" после установки библиотеки через композер

Сообщение Neuromance »

Должно быть use vendor\library\ApiFactory; , вы уверены, что именно так пишете?
mickgeek
Сообщения: 957
Зарегистрирован: 2014.05.31, 20:50
Откуда: Санкт-Петербург
Контактная информация:

Re: "Class not found" после установки библиотеки через композер

Сообщение mickgeek »

Посмотрите composer.json в репозитории библиотеки, там найдёте namespace.
baydikov
Сообщения: 112
Зарегистрирован: 2012.11.05, 15:52

Re: "Class not found" после установки библиотеки через композер

Сообщение baydikov »

Если, как советует Neuromance, получается что дефисы дают ошибку

Код: Выделить всё

use vendor\testsoftware\api-client\ApiFactory;
А, в composer.json

Код: Выделить всё

testsoftware/api-client
Аватара пользователя
futbolim
Сообщения: 2051
Зарегистрирован: 2012.07.08, 19:28

Re: "Class not found" после установки библиотеки через композер

Сообщение futbolim »

Та дайте Вы ссылку на гитхаб
mickgeek
Сообщения: 957
Зарегистрирован: 2014.05.31, 20:50
Откуда: Санкт-Петербург
Контактная информация:

Re: "Class not found" после установки библиотеки через композер

Сообщение mickgeek »

В composer.json должна быть часть autoload, что там написано? И посмотрите namespace в самом классе:

Код: Выделить всё

<?php

namespace testsoftware/api; 
baydikov
Сообщения: 112
Зарегистрирован: 2012.11.05, 15:52

Re: "Class not found" после установки библиотеки через композер

Сообщение baydikov »

Видимо, вся проблема в том, что данная библиотека не использует namespace, там отсутствуют пространства имен.
Загуглил, нашел такую тему, видимо прийдется все таки юзать require()
http://stackoverflow.com/questions/2812 ... -with-yii2
chesar
Сообщения: 514
Зарегистрирован: 2013.04.10, 17:49

Re: "Class not found" после установки библиотеки через композер

Сообщение chesar »

baydikov писал(а): Но сейчас мне приходится постоянно делать require(), иначе получаю ошибку "Class not found".
Не надо каждый раз. Сделайте это один раз в index.php

Код: Выделить всё

require(__DIR__ . '/../vendor/autoload.php');
require(__DIR__ . '/../vendor/yiisoft/yii2/Yii.php');

$config = require(__DIR__ . '/../config/web.php');

$app = new yii\web\Application($config);
require(__DIR__ . '/../vendor/vendorname/package/file.php');
$app->run();
 
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: "Class not found" после установки библиотеки через композер

Сообщение zelenin »

baydikov писал(а):Видимо, вся проблема в том, что данная библиотека не использует namespace, там отсутствуют пространства имен.
Загуглил, нашел такую тему, видимо прийдется все таки юзать require()
http://stackoverflow.com/questions/2812 ... -with-yii2
не бывает классов без пространств имен. Есть корневой namespace. composer работает и с ними.
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: "Class not found" после установки библиотеки через композер

Сообщение ElisDN »

mickgeek писал(а):namespace testsoftware/api;
Значит это и используйте:

Код: Выделить всё

use  testsoftware\api\ApiFactory; 
mickgeek
Сообщения: 957
Зарегистрирован: 2014.05.31, 20:50
Откуда: Санкт-Петербург
Контактная информация:

Re: "Class not found" после установки библиотеки через композер

Сообщение mickgeek »

ElisDN, этот namespace был взят с потолка, в качестве примера.
Ответить