我在项目中使用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,composer dump如下所示: 没有“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'),
);
任何帮助?
答案 0 :(得分:11)
This answer也适用于此。
因为您提供的是"类型:包"输入"存储库",您将禁用包中的composer.json
文件。
并且包定义中没有定义自动加载,因此包根本不会自动加载。
解决方案:不要使用" type:package"您拥有的存储库的条目,其中包含composer.json
文件。