【发布时间】:2021-03-27 15:22:42
【问题描述】:
我刚刚升级到 Composer 2.0,它显然对解析类的方式做了一些修改...
composer dump-autoload -o 或别名 composer du -o 基本上会在我的控制台中转储很多行,其中包含如下文本:
类 MyProject\SubCategory\CoolClass 位于 C:/udvikling/MyProjectRoot/src/MyProjectClasses\MyProject\SubCategory\CoolClass.php 不符合 psr-4 自动加载标准。跳过
阅读Composer psr-4 autoload issue 后,我确保所有有助于我的命名空间和类路径的名称都是大写的。即use myproject/helperclass 现在是use MyProject/HelperClass
我的 C:/udvikling/MyProjectRoot/src/composer.json 包括以下内容
"autoload": {
"psr-4": {
"MyProject\\": "MyProjectClasses/"
}
}
我通过在类名中添加一个前导反斜杠来解决这个问题:
<?php
namespace \MyProject\Core;
class Timer {
//...
但是...根据php.net
名称空间声明中不允许使用完全限定名称(即以反斜杠开头的名称),因为此类结构被解释为相对名称空间表达式。
所以这似乎不是正确的选择...(我的 IDE 在它下面还给了我一条愤怒的波浪线...)
除了回到另一个版本的作曲家之外,我该如何解决这个问题?
文件结构:
C:\udvikling\MyProjectRoot -- the root of the project
C:\udvikling\MyProjectRoot\src --the php sources
C:\udvikling\MyProjectRoot\src\MyProjectClasses -- my PHP classes
C:\udvikling\MyProjectRoot\src\vendor -- my vendor stuff for composer
C:\udvikling\MyProjectRoot\src\composer.json - my composer config
【问题讨论】:
-
你能告诉我们你的文件结构吗?
-
我不确定你的文件结构是什么。格式看起来有点糟糕。是
C:/udvikling/MyProjectRoot/src/MyProjectClasses还是有实际的下划线?还有你的composer.json文件在这个结构中的什么位置? -
@apokryfos 我希望这能让它更清楚
标签: php namespaces composer-php