Автоматическая загрузка композитора psr-4 не добавляет пространство имен в автоматическую загрузку psr4.php
Я использую в проекте пользовательский репозиторий на github, который содержит мой набор инструментов.
Проект правильно импортирует пакет в каталог /vendor, но я не могу использовать ни один из классов, потому что он не загружает содержимое пакета автоматически.
Мой файл composer.json пакета выглядит следующим образом:
{
"name": "mynamespace/toolbox",
"description": "Asdfoobar.",
"keywords": ["mynamespace", "toolbox"],
"license": "MIT",
"require": {
"php": ">=5.4"
},
"require-dev": {
"codeception/codeception": "2.0.2",
"codeception/specify": "0.3.6",
"codeception/verify": "0.2.7",
"mockery/mockery": "0.9.1"
},
"autoload": {
"psr-4": {
"Mynamespace\\": "src/Mynamespace",
"Mocks\\": "tests/Mocks"
}
},
"scripts": {
"post-install-cmd": [
],
"post-update-cmd": [
"php vendor/bin/codecept run"
]
},
"config": {
"preferred-install": "dist"
},
"minimum-stability": "stable"
}
Вместо этого внутри проекта файл composer.json выглядит следующим образом:
"require": {
[...stuff...]
"Mygitrepo/toolbox": "dev-master"
},
"repositories": [
{
"type": "package",
"package": {
"name": "Mygitrepo/toolbox",
"version": "master",
"source": {
"url": "https://github.com/Mygitrepo/toolbox.git",
"type": "git",
"reference": "master"
}
}
}
]
Окончательный autoload_psr4.php после выполнения обновление композитора, дамп композитора выглядит следующим образом: Никаких следов "Mynamespace"
return array(
'Monolog\\' => array($vendorDir . '/monolog/monolog/src/Monolog'),
'Ivory\\LuceneSearchBundle\\' => array($vendorDir . '/egeloen/lucene-search-bundle'),
'Facebook\\' => array($vendorDir . '/facebook/php-sdk-v4/src/Facebook'),
);
Есть какая-нибудь помощь?
1 answers
Этот ответ применим и здесь.
Поскольку вы предоставляете запись "тип:пакет" в "репозитории", вы отключаете файл composer.json
в пакете.
И в определении пакета не определена автоматическая загрузка, поэтому пакет вообще не загружается автоматически.
Решение: Не используйте запись "тип:пакет" для репозиториев, которыми вы владеете и в которых есть файл composer.json
.