установка пакетов Yii2 без composer
Сразу попрошу всех, кто советует что-то типа "не мучайся, установи композер" листать Stack дальше.
Вот тут один из авторов Yii2 рассказал, как поставить пакет без composer'а. Вполне подробно и ясно для технического повторения и оно работает на пакетах с аналогичной структурой и не хитрым названием. Однако ввиду того, что не ясно, для чего используется каждый их файлов и не ясно где используются ключи и значения создаваемых массивов, при ручной установке отдельных пакетов возникают вопросы ибо нужно понятие вопроса, а не механическое повторение. Я выбрал пакет https://github.com/maxmind/MaxMind-DB-Reader-php, в котором надо подключить несколько классов и у которого имя нестандартное. Попробовал его установить и соответственно получил ошибку Class 'MaxMind\Db\Reader' not found
Я подробно опишу ход свои действий.
Скачал, распаковал, переименовал из "MaxMind-DB-Reader-php-master" в "MaxMind"
В vendor создал папку maxmind, скопировал в неё MaxMind. Получил vendor/maxmind/MaxMind/...
В файле autoload_psr4.php добавил
'MaxMind\\Db\\' => array($vendorDir . '/maxmind/MaxMind/src/MaxMind/Db'),В файле extensions добавил
'maxmind-db/reader' => array( 'name' => 'maxmind-db/reader', 'version' => '1.0.4', 'alias' => array( '@maxmind-db/reader' => $vendorDir . '/maxmind/MaxMind-DB-Reader/src/MaxMind/Db', '@maxmind-db/reader/decoder' => $vendorDir . '/maxmind/MaxMind/src/MaxMind/Db/Reader', '@maxmind-db/reader/invalidDatabaseException' => $vendorDir . '/maxmind/MaxMind/src/MaxMind/Db/Reader', '@maxmind-db/reader/metadata' => $vendorDir . '/maxmind/MaxMind/src/MaxMind/Db/Reader', '@maxmind-db/reader/util' => $vendorDir . '/maxmind/MaxMind/src/MaxMind/Db/Reader', ),),
должно бы работать, но нет - Class 'MaxMind\Db\Reader' not found
Я бы попросил знающих людей объяснить по пунктам следующие вопросы:
- Для чего нужен файл autoload_psr4.php?
- Где потом используется ключ, созданный в utoload_psr4.php -
MaxMind\\Db\\ - Где потом используется ключи, созданные в extensions -
'@maxmind-db/reader',@maxmind-db/reader/decoderи прочие. - Где используется основной ключ, созданный в файле extensions -
'maxmind-db/reader' - Где используется значение ключа
'name', созданное в файле extensions -'maxmind-db/reader' - Могут ли ключ из п.4 и значение из п.5 быть разными?
- Зачем знак @ в ключах в файле extensions ?
- Для чего нужен файл extensions ?
Также попросил бы рассказать механику работы, например: "сначала скрипт заходит в такой то файл, берёт такое-то значение и делает то-то, затем то-то".
Если написать в каком-то другом файле use MaxMind\Db\Reader; то Нетбинс при клике по Reader переходит в класс. Понимаю, что это не аргумент, но как бы связь есть, получается. Однако в браузере ошибка.
Спасибо.
Ответы (1 шт):
Указанные в вопросе вопросы остаются открытыми, но методом тыка удалось подобрать верный вариант
'MaxMind\\Db\\' => array($vendorDir . '/maxmind/MaxMind/src/MaxMind/Db'),
и
'maxmind-db/reader' =>
array(
'name' => 'maxmind-db/reader',
'version' => '1.0.4',
'alias' =>
array(
'@MaxMind/Db' => $vendorDir . '/maxmind/MaxMind/src/MaxMind/Db',
'@MaxMind/Db/decoder' => $vendorDir . '/maxmind/MaxMind/src/MaxMind/Db/Reader',
'@MaxMind/Db/invalidDatabaseException' => $vendorDir . '/maxmind/MaxMind/src/MaxMind/Db/Reader',
'@MaxMind/Db/metadata' => $vendorDir . '/maxmind/MaxMind/src/MaxMind/Db/Reader',
'@MaxMind/Db/util' => $vendorDir . '/maxmind/MaxMind/src/MaxMind/Db/Reader',
),
),