提问人:Martin 提问时间:5/3/2023 最后编辑:Martin 更新时间:5/3/2023 访问量:71
这个命名空间问题是我的问题还是IDE问题?
Is this namespacing issue my problem or is it an IDE problem?
问:
我在 PhpStorm IDE 上有一个命名空间通知,但我看不到如何解决它。
集成开发环境
- Php风暴 2023.1
结构
我在其他供应商的各种其他类中有一个类,我的类位于此文件夹中:
/home/classes/vendor/namespaceOuter/namespaceInner/subnamespace
自动加载器 .php 文件位于/home/classes/
我的类文件位于上面的文件夹中,并且是 .其中,它有如下规定: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 设置或涉及的(其他类)。
尝试的解决方案
我试图更改命名空间以使其从类文件中的根()调用,但这不会删除通知。
\namespaceOuter\namespaceInner\subnamespace\ClassFile;
我试图使用IDE建议的修复程序,该修复程序实际上在当前类的文件夹()中制作了一堆新的子文件夹,这显然是不切实际和错误的。
/home/classes/vendor/namespaceOuter/namespaceInner/subnamespace/namespaceOuter/namespaceInner/subnamespace/ClassFile.php
文件夹中其他已建立的类(如 PHPMailer)在其类文件上没有相同的通知。
vendor/
读数
我已经阅读了 PHP Namespacing 文档以及 PSR-4 文档,其中包括以下示例:
完全限定类名 | 命名空间前缀 | 基本目录 | 生成的文件路径 |
---|---|---|---|
\symfony\Core\请求 | Symfony\核心 | ./供应商/Symfony/核心/ | ./vendor/symfony/core/request.php |
虽然这不是一个 Symfony 项目,但限定的命名空间和文件路径之间的不一致意味着这不是问题。
完全限定类名 | 命名空间前缀 | 基本目录 | 生成的文件路径 |
---|---|---|---|
\namespaceOuter\namespaceInner\subnamespace\ClassFile.php | namespaceOuter\namespaceInner\subnamespace | 类/供应商/ | ??? |
问题
这个命名空间是否以某种方式不正确,或者 PHPStorm IDE 建议是否存在问题(我相信是这样)——如果是这样,我该如何检查/更新/确认/修复这个问题?
谢谢
答:
在花了很长时间写下这个问题后,我发现答案是:
在 PhpStorm --> Settings --> Directories 中,该目录被标记为“资源根”。通过将其替换为资源根(文档),通知神奇地消失了。/home/classes/vendor/namespaceOuter/namespaceInner/subnamespace
/home/classes/
因此,此问题似乎是IDE问题,而不是命名空间问题。
编辑:
项目根目录是 。
是 .
该文件夹现在是“资源根”,该文件夹是 PhpStorm 项目的“内容根”。/home/
$_SERVER['DOCUMENT_ROOT']
/home/public_html
classes/
/home/
这是有效的,因为(我认为)自动加载器位于文件夹中,因此 PhpStorm “Resources Root” 应该是 PHP 自动加载器所在的文件夹,以便 PhpStorm 可以找到所有自动加载的类classes/
评论
/home/classes/
/home/
/home/classes/
PROJECT_ROOT/public
classes
vendor
上一个:命名空间与 phpUnit 冲突
下一个:使用不再需要的语句?[复制]
评论
vendor
\App\Models\User
PROJECT_ROOT/src/App/Models/User.php
Settings/Preferences | Directories
PROJECT_ROOT/src/App
App