作曲家:如何在 /src 中递归自动加载子文件夹



我正在为作曲家包编写一些测试,但我无法在/src 的子文件夹中加载类。

我的文件夹结构

root
 - src
   - file1.php
   - folder1
     - folder2
       - file2.php
 - tests

测试的文件夹结构反映了 src 的结构。

在我的作曲家.json中,我有:

{
    "autoload": {
        "psr-4": {
            "Namespace1\Package_Namespace\": "src"
        }
    }
}

现在,当我启动测试时,只有 src 中的测试可以很好地包含自己的类,而使用子文件夹中类的类则不能(例如,file2.php永远不会加载)。

我还尝试在 composer.json 文件中显式指定子文件夹,但它似乎不起作用。

我希望有人能帮助我。如果您需要更多信息,请告诉我,我会提供它们。

谢谢你,祝你圣诞快乐!

我认为您可能需要转义配置中的命名空间:

"autoload": { "psr-4": { "Namespace1\Package_Namespace\": "src" } }

并确保您的类/文件名遵循 PSR-4。另外,请确保 PHPUnit/您正在运行的任何测试套件加载作曲家自动加载文件。

伊塔:

您还可以手动将测试添加到 bootstrap.php 文件中的命名空间(如果您将测试用于命名空间):

$loader = require __DIR__ . "/../vendor/autoload.php";
$loader->addPsr4('Namespace1\Package_Namespace\', __DIR__.'/testdir');

显然,您需要根据自己的路径调整上述内容。

我认为作曲家加载 psr-4 地图的方式有问题。

事实上,我已经更改了反映文件夹结构的命名空间,现在一切正常。

我认为命名空间可以与文件夹结构不同,但这不起作用。

我无法更好地解释我的解决方案,而只能解释反映文件夹结构有效。是偶然的吗?麻将!

无论如何,它现在可以工作...

相关内容

  • 没有找到相关文章

最新更新