我在 PhpStorm IDE 上有一个命名空间通知,我不知道如何解决它。
我在其他供应商的各种其他课程中有一个课程,我的课程位于这个文件夹中:
/home/classes/vendor/namespaceOuter/namespaceInner/subnamespace
autoloader.php 文件位于
/home/classes/
我的 class 文件 位于上面的文件夹中,并且是
ClassFile.php
。在里面,这有 namespace
如下所示:
<?php
Namespace namespaceOuter\namespaceInner\subnamespace\ClassFile;
use \exception;
use \PDOexception;
class ClassFile {
...
}
PhpStorm IDE 告诉我:
命名空间名称与 PSR-0/PSR-4 项目结构不匹配
我试图更改命名空间以使其从类文件中的根目录 (
\namespaceOuter\namespaceInner\subnamespace\ClassFile;
) 调用,但这不会删除通知。
我尝试使用 IDE 建议的修复程序,它实际上在当前类的文件夹 (
/home/classes/vendor/namespaceOuter/namespaceInner/subnamespace/namespaceOuter/namespaceInner/subnamespace/ClassFile.php
) 中创建了一堆新的子文件夹,这显然是不切实际和错误的。
vendor/
文件夹中的其他已建立的类(例如PHPMailer)在其类文件中没有相同的通知。
我已经阅读了 PHP Namespacing 文档 以及 PSR-4 文档 其中包括这个例子:
完全合格的类名 | 命名空间前缀 | 基本目录 | 结果文件路径 |
---|---|---|---|
\Symfony\核心\请求 | Symfony\核心 | ./供应商/Symfony/核心/ | ./vendor/Symfony/Core/Request.php |
虽然这不是 Symfony 项目,限定名称空间和文件路径之间的不一致意味着这不是问题。
完全合格的类名 | 命名空间前缀 | 基本目录 | 结果文件路径 |
---|---|---|---|
amespaceOuter amespaceInner\subnamespace\ClassFile.php | 命名空间外层 amespaceInner\subnamespace | 课程/供应商/ | ??? |
这个命名空间是否不正确或者 PHPStorm IDE 建议有问题(我相信是这样)——如果是这样,我如何检查/更新/确认/修复这个问题?
谢谢
花了很长时间写出这个问题,我发现答案是:
在 PhpStorm --> 设置 --> 目录中,
/home/classes/vendor/namespaceOuter/namespaceInner/subnamespace
目录被标记为“资源根目录”。通过将其替换为 /home/classes/
作为资源根(Documentation),通知神奇地消失了。
所以这个问题似乎是一个 IDE 问题而不是命名空间问题。