我正在为一个composer包编写一些测试,但是我无法在/ src的子文件夹中加载类。
我的文件夹结构
root
- src
- file1.php
- folder1
- folder2
- file2.php
- tests
测试'文件夹结构反映了src。
之一在我的composer.json中我是:
{
"autoload": {
"psr-4": {
"Namespace1\\\Package_Namespace\\\": "src"
}
}
}
现在,当我启动测试时,只有src中的那些可以很好地包含它们自己的类,而使用子文件夹中的类的那些不能(例如,永远不会加载file2.php)。 / p>
我还试图在composer.json文件中明确指定子文件夹,但它似乎无效。
我希望有人可以帮助我。如果您需要更多信息,请告诉我,我会提供。
谢谢你,祝你圣诞快乐!答案 0 :(得分:2)
我认为您可能需要在配置中转义命名空间:
"autoload": { "psr-4": { "Namespace1\\Package_Namespace\\": "src" } }
并确保您的课程/文件名遵循PSR-4。另外,确保PHPUnit /您运行的任何测试套件都加载了composer autoload文件。
ETA:
您也可以手动将测试添加到bootstrap.php文件中的命名空间(如果您使用的是测试中的命名空间):
$loader = require __DIR__ . "/../vendor/autoload.php";
$loader->addPsr4('Namespace1\\Package_Namespace\\', __DIR__.'/testdir');
显然,您需要根据路径调整上述内容。
答案 1 :(得分:0)
我认为Composer加载psr-4地图的方式有问题。
事实上,我已经更改了反映文件夹结构的命名空间,现在一切正常。
我认为命名空间可能与文件夹结构不同,但这不起作用。
我无法更好地解释我的解决方案,但只有反映文件夹结构才有效。这是一种随意性吗?麻将!
无论如何,它现在有效......