2016-12-05 108 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.