Php Composer PSR-4 autoload在尝试多种方法和教程后不起作用
我正在为我的框架的功能制作一个composer库,但我遇到了这个问题,问题是psr-4的自动加载 我的配置 我有以下结构Php Composer PSR-4 autoload在尝试多种方法和教程后不起作用,php,composer-php,psr-4,Php,Composer Php,Psr 4,我正在为我的框架的功能制作一个composer库,但我遇到了这个问题,问题是psr-4的自动加载 我的配置 我有以下结构 ├───src ├───test └───vendor ├───composer ├───symfony │ ├───polyfill-ctype │ └───polyfill-mbstring │ └───Resources │ └───unidata ├───twig
├───src
├───test
└───vendor
├───composer
├───symfony
│ ├───polyfill-ctype
│ └───polyfill-mbstring
│ └───Resources
│ └───unidata
├───twig
│ └───twig
│ ├───doc
│ │ ├───filters
│ │ ├───functions
│ │ ├───tags
│ │ └───tests
│ └───src
│ ├───Cache
│ ├───Error
│ ├───Extension
│ ├───Loader
│ ├───Node
│ │ └───Expression
│ │ ├───Binary
│ │ ├───Filter
│ │ ├───Test
│ │ └───Unary
│ ├───NodeVisitor
│ ├───Profiler
│ │ ├───Dumper
│ │ ├───Node
│ │ └───NodeVisitor
│ ├───RuntimeLoader
│ ├───Sandbox
│ ├───Test
│ ├───TokenParser
│ └───Util
└───xenframe
└───hello
└───src
最后一个文件夹是MyLibrary,其中包含hello文件夹
在hello文件夹的根目录中,我有一个composer.json
和一个src
文件夹
composer.json
{
“name”:“xenframe/hello”,
“类型”:“库”,
“许可证”:“麻省理工学院”,
“作者”:[
{
“名称”:“XENONMC”,
“电子邮件”:support@xenonmc.xyz"
}
],
“最低稳定性”:“稳定”,
“要求”:{
},
“自动加载”:{
“psr-4”:{
“你好\\”:“/src”
}
}
}
src/
文件夹内是主文件->index.php
index.php
在测试给定代码时,通过将src
中的index.php
重命名为与文件中的类名相关的App.php
来解决问题。在composer.json
的psr-4
部分中也使用了“xenframe\\hello\\”:“src/”
另外值得一提的是,尽管composer由于PSR-4不合规而无法自动加载所需的类,但composer没有报告任何错误
问题是:
类的文件名不正确符合。从
终止类名对应于以.php
结尾的文件名。文件名必须与终止类名的大小写匹配
composer.json的psr-4
部分中提到的名称空间
与类文件中使用的名称空间
不匹配。从
在psr-4
键下,定义从名称空间到路径的映射(相对于包根)。当自动加载类(如Foo\\Bar\\Baz
时,指向目录src/
的命名空间前缀Foo\\\
意味着自动加载程序将查找名为src/Bar/Baz.php的文件,并将其包含(如果存在)
运行composer update
时,出现了什么错误…?它是本地安装的,我没有看到任何错误,我尝试composer dumpautoload
重新生成autoload composer.json。我想应该是“xenframe\\hello\\”:“xenframe/hello/src/”哦,我只是在测试你的代码。我必须在src
中将index.php
重命名为App.php
,这与文件中的类名有关。还使用了composer.json
中的psr-4
部分中的“xenframe\\hello\\”:“src/”
,它开始工作。您尝试了哪些方法使您的代码符合PSR4?如果有任何错误信息,请编辑您的问题,以包含它-我会假设它包含一个关于什么是错误的提示