我的文件结构如下:
├─ vendor/
└─ src/
├─ Acme/
│ ├─ Foul/
│ │ └─ Nest.php
│ └─ Universal.php
└─ Foo.php我正在尝试使用Composer自动加载PSR-4。这段代码:
$obj = new Acme\Universal();给我一个错误:Fatal error: Class 'Acme\Universal' not found in ...
如果我在composer.json中使用此代码片段
"autoload": {
"psr-4": {"Acme\\": "src/"}
}但是如果我使用
"autoload": {
"psr-4": {"Acme\\": ["src/", "src/Acme/"]}
}一切都很好。我甚至可以访问
$otherObj = new Acme\Foul\Nest();请注意,我每次更改composer.json文件时都会运行composer install。
发布于 2015-01-03 02:32:47
PSR-4不包含要搜索的路径中的前缀,而PSR-0包含。
因此,使用"Acme\\": "src/"的Acme\Universal将在使用PSR-4的src/Universal.php和使用PSR-0的src/Acme/Universal.php中进行搜索。
在这种情况下,您应该将src/Acme/目录的内容移动到src/。创建PSR-4正是为了删除这些目录,其中只有一个子目录,没有其他文件。
https://stackoverflow.com/questions/27740207
复制相似问题