如何使用composer和PhpStorm从同一父目录中的多个模块/源自动加载?

How to autoload from multiple modules/sources in the same parent directory with composer and PhpStorm?

提问人:Aryn 提问时间:4/5/2023 最后编辑:LazyOneAryn 更新时间:4/5/2023 访问量:73

问:

我想使用 PhpStorm 和 composer 从多个源目录自动加载多个模块,并在正确的目录/具有正确的命名空间中创建新类。

项目结构如下所示:

ProjectName
- ModuleA
- - src
- - - Foo
- - - - Bar.php
- - - Baz.php
- - public
- - ...
- ModuleB
- - src
- - ...
- ModuleC
- - src
- - ...
- composer.json

我还希望我的命名空间包含项目和模块名称,例如ProjectName\ModuleA\Foo

我目前:composer.json

{
    "autoload": {
        "psr-4": {
            "ProjectName\\ModuleA\\": "ModuleA/src",
            "ProjectName\\ModuleB\\": "ModuleB/src",
            "ProjectName\\ModuleC\\": "ModuleC/src"
        }
    }
}

这有效,但是 PhpStorm 一直告诉我“命名空间名称与 PSR-0/PSR-4 项目结构不匹配”,并且我应该将 ModuleA 中的类从 移动到 .ProjectName/ModuleA/srcsrc/ProjectName/ModuleA

当我在没有指定命名空间的情况下创建一个新类时,PhpStorm 会正确识别子目录,但不包括项目和模块名称,例如 而不是。namespace Foo;namespace ProjectName\ModuleA\Foo;

另一方面,如果我在创建类期间指定命名空间,PhpStorm 会在模块的文件夹中为项目和模块名称创建一个新目录。src

PHP 命名空间 composer-php phpstorm 自动加载

评论

1赞 LazyOne 4/5/2023
显示/检查您的“设置/首选项 |目录”。这些东西在那里配置(源根)。P.S. 同步设置(默认情况下应该是 ON)应该真的会解决这个问题......composer.json

答: 暂无答案