位于./Foo/Bar/utility/Baz.php中的类Foo\Bar\Baz不符合psr-4自动加载标准。跳过
运行composer的位于./Foo/Bar/utility/Baz.php中的类Foo\Bar\Baz不符合psr-4自动加载标准。跳过,php,composer-php,autoload,Php,Composer Php,Autoload,运行composer的更新,安装,要求,转储自动加载等时。;我突然收到一张黄色的反对通知,上面写着: 位于./Foo/Bar/utility/Baz.php中的类Foo\Bar\Baz不符合psr-4自动加载标准。跳绳 在Composer 2.0之前,人们通常会得到: 弃用通知:位于./Foo/Bar/Baz.php中的类Foo\Bar\Baz不符合psr-4自动加载标准。它将不再在Composer v2.0中自动加载。在里面phar:///usr/local/bin/composer/src/
更新
,安装
,要求
,转储自动加载
等时。;我突然收到一张黄色的反对通知,上面写着:
位于./Foo/Bar/utility/Baz.php中的类Foo\Bar\Baz不符合psr-4自动加载标准。跳绳
在Composer 2.0之前,人们通常会得到:
弃用通知:位于./Foo/Bar/Baz.php中的类Foo\Bar\Baz不符合psr-4自动加载标准。它将不再在Composer v2.0中自动加载。在里面phar:///usr/local/bin/composer/src/Composer/Autoload/ClassMapGenerator.php:201
为什么我会收到这样的通知或警告?我需要什么来摆脱它并为Composer 2.0做好准备?这可能是由于各种原因造成的 重要的是要注意错误信息,它通常非常准确地指出问题的根源 路径案例 最常见的原因是,如错误消息所示,
Bar.php
路径名的不同组件的大小写与完全限定类名的大小写不匹配
foo/bar/Baz.php
与App\bar\Baz
不匹配
只需更新您的应用程序或包,使每个路径组件匹配其名称空间的大小写:
Foo\Bar\Baz.php
文件名和类名或命名空间的差异
非常仔细地对照名称空间检查路径名。有时,您将类(或名称空间)命名为FooBar
,但其在磁盘上的路径是“FooBar”,例如。或者由于任何原因,您的命名空间与文件的路径名不完全匹配
这也将触发通知/警告。您需要重命名文件或重命名类(或名称空间)
通常,更改路径或文件要容易得多,因为更改类或命名空间名称需要重构代码以匹配新名称,而更改路径则不需要重构任何内容
嵌套命名空间和缺少声明
假设您有:
“自动加载”:{
“psr-4”:{
“嘶嘶\\嗡嗡声\\\”:“src/”
}
},
类Dummy
,在内部定义src/Buzz
:
// src/Buzz/Dummy.php
namespace Fizz\Buzz
class Dummy {}
上面的方法会起作用,但会像其他方法一样抛出通知。正确的方法是:
// src/Buzz/Dummy.php
namespace Fizz\Buzz\Buzz
class Dummy {}
您不仅需要对受影响的类进行更改,还需要对使用或导入该类的任何其他文件进行更改。(例如,现在声明使用Fizz\Buzz\Buzz\Dummy;
)