针对供应商的 PhpStorm PSR-4 命名空间修复建议

Posted

技术标签:

【中文标题】针对供应商的 PhpStorm PSR-4 命名空间修复建议【英文标题】:PhpStorm PSR-4 namespace fix suggestions for vendor 【发布时间】:2021-08-16 01:29:51 【问题描述】:

我创建了公司供应商库,但名称空间有问题。 通常我会忽略这一点,但现在想解决问题。

我现在测试示例供应商Symfony\Bundle\FrameworkBundle,但这有相同的错误。

当我创建一个我建议的新文件时

如何配置 phpStorm 以建议正确的命名空间?

也许来自供应商 composer.json?它有:

  "autoload": 
        "psr-4":  "Symfony\\Bundle\\FrameworkBundle\\": "" ,

【问题讨论】:

你的问题解决了吗? 【参考方案1】:

如果您有自定义类,则需要在 composer.json 中配置 PSR4 命名空间。 你不能直接在 vendor 目录中创建你的类,因为当你更新依赖时它可以被覆盖。

例如,如果您在 src/ 中具有命名空间 Kernel 的自定义类:

"autoload": 
    "psr-4":  "Kernel\\": "src/" 

【讨论】:

这是示例,我在我的供应商中创建文件,您提供的解决方案工作。但这很累人 - 对于我的每一个 verdor,我都必须添加 "repositories": [ "type": "vcs", "url": "git@bitbucket.org:... 然后 "autoload": "psr-4 ": "My\\Bundle\\TestBundle\\": "vendor/My/... 我不明白为什么我们不能在包中使用 composer.json (allow add loc),这个文件毕竟有这个条目 如果您使用自定义供应商,则不需要为每个供应商添加 psr4 配置,因为您的每个供应商都有他的 composer.json 和他的 psr4 配置,然后 composer 会自动加载它跨度> 是的,这是正确的,但 PHPStorm 不使用这个 composer.json - 将其显示为命名空间错误,当我创建它时建议错误的命名空间。可以告诉 PHPStorm 使用供应商命名空间 composer.json 吗? 我的 PHPStorm 会自动执行此操作,无需任何配置。但是你可以看一下首选项,然后搜索composer,如果PHPStorm没有自动检测到它,你会找到composer.json的路径字段,也许它可以解决你的问题【参考方案2】:

尝试取消标记 vendor 文件夹为Source Root

【讨论】:

以上是关于针对供应商的 PhpStorm PSR-4 命名空间修复建议的主要内容,如果未能解决你的问题,请参考以下文章

非空 PSR-4 前缀必须以命名空间分隔符结尾

psr规范

psr规范发展历程

如何使用 Composer 从供应商外部自动加载类?

PSR规范

PSR规范