【问题标题】:Class not found with Composer autoload and PSR-0使用 Composer 自动加载和 PSR-0 找不到类
【发布时间】:2026-01-30 08:05:01
【问题描述】:

我正在尝试在作曲家中使用 PSR-0 而不是类映射,但遇到了一些困难。看来我的 json 文件是正确的,但我试图访问的类没有被拾取。有人可以看看,看看他们是否能发现我哪里出错了:

这是我在 composer.json 中的内容:

"autoload": {
    "psr-0": {
        "MartynBiz\\Slim3Controller\\": "src/"
    }
},

下面是我的文件夹结构:

$ tree .
.
|-- README.md
|-- composer.json
|-- composer.lock
|-- phpunit.xml
|-- src
|   |-- Controller.php
|   |-- Http
|   |   |-- Request.php
|   |   `-- Response.php
|   `-- Test
|       `-- PHPUnit
|           `-- TestCase.php
`-- tests
    |-- bootstrap.php
    `-- library
        `-- ControllerTest.php

这是我的控制器类:

<?php
namespace MartynBiz\Slim3Controller;

abstract class Controller
{

另外,我可以确认已包含 composer 自动加载脚本。

【问题讨论】:

  • 删除 src 后面的斜杠。然后尝试运行 composer update
  • 没有区别。根据作曲家文档,它似乎应该包含斜杠 - getcomposer.org/doc/04-schema.md#psr-0
  • 哦,好吧,我把它改成了 PSR-4,它现在找到了类 :) PSR-4 或 PSR-0 很好,我只是不想继续运行composer dump-autoload与类映射一样。

标签: php composer-php psr-0


【解决方案1】:

改用 PSR-4。 PSR-0 要求前缀包含在文档树中(即src/MartynBiz/Slim3Controller/Controller.php)。

【讨论】: