2016-12-05 62 views
5

我曾在一包用作曲家要求-dev的requireing需要依赖-dev的

"autoload-dev": { 
    "psr-4": { 
     "Vendor\\PackageA\\PhpUnit\\": "tests/PhpUnit" 
    } 
}, 

这工作得很好被自动加载被命名空间的一些测试。

我还有一个包,里面也有命名空间,需要在程序包A

"autoload-dev": { 
    "psr-4": { 
     "Vendor\\PackageB\\PhpUnit\\": "tests/PhpUnit" 
    } 
}, 

然而,命名空间的测试之一,当我尝试,包括在包B的文件测试包B,该类是不发现

use Vendor\PackageA\PhpUnit\MyTestFromA; 

class MyTestFromB extends MyTestFromA 
{ 

让我觉得来自其他软件包的自动加载开发的东西没有被加载。

PHP Fatal error: Class 'Vendor\PackageA\PhpUnit\MyTestFromA' not found in /full/path/to/PackageBClass.php on line 3

当我尝试并导入正在使用autoload从程序包B,而不是autoload-dev自动加载一个文件,我没有得到任何错误。

我该如何克服这个问题?

我的一部分正在考虑为测试制作一个软件包,并在没有autoload-dev的情况下自动加载,但我想先确认一下。

+0

Duplicate + Answer:http://stackoverflow.com/a/21171171/1163786 –

回答

6

解决方案:Composer autoload-dev does not work

Take a look at the docs . It says: "autoload-dev (root only)". root only means it only applies to the root package. As you included the package, the shown composer.json file is not the root package and the autoload-dev section is thus ignored.