我在一个项目中使用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'), );
有帮助吗?
这个答案也适用于此.
因为您在"存储库"中提供了"type:package"条目,所以您将禁用composer.json
该包中的文件.
并且包定义中没有定义自动加载,因此包根本不会自动加载.
解决方案:不要将"type:package"条目用于您拥有的存储库以及其中包含composer.json
文件的存储库.