这个命名空间问题是我的问题还是 IDE 问题?

问题描述 投票:0回答:1

我在 PhpStorm IDE 上有一个命名空间通知,我不知道如何解决它。

IDE

  • PhpStorm 2023.1

结构

我在其他供应商的各种其他课程中有一个课程,我的课程位于这个文件夹中:

/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 项目结构不匹配

没问题

  • 自动装载机工作完美。
  • 班级及其孩子和同龄人都在实时网站上完美运行,问题似乎纯粹是 IDE 通知我我们没有遵循 PSR-0/PSR-4。
  • 这些是我们自己的类,不是由 Composer 设置或涉及 Composer(其他类也是)。

尝试过的解决方案

  • 我试图更改命名空间以使其从类文件中的根目录 (

    \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 建议有问题(我相信是这样)——如果是这样,我如何检查/更新/确认/修复这个问题?

谢谢

php namespaces phpstorm
1个回答
3
投票

花了很长时间写出这个问题,我发现答案是:

在 PhpStorm --> 设置 --> 目录中,

/home/classes/vendor/namespaceOuter/namespaceInner/subnamespace
目录被标记为“资源根目录”。通过将其替换为
/home/classes/
作为资源根(Documentation),通知神奇地消失了。

所以这个问题似乎是一个 IDE 问题而不是命名空间问题。

© www.soinside.com 2019 - 2024. All rights reserved.