PSR-4 自动加载器问题

PSR-4 autoloader issue

我很难看出我在自动加载器上做错了什么。我的文件夹结构如下:

| - src/
|    - Files/
|        - Bla.php
|    - Models/
|        - ...
| - vendor/
|     - ...
| composer.json

composer.json 自动加载部分如下所示:

"autoload": {
    "psr-4": {
        "Migrations\" : "src/"
    }
}

现在 Bla.php 看起来像这样:

<?php

namespace Migrations\Files;

use Doctrine\DBAL\Schema\Schema;
use Doctrine\Migrations\AbstractMigration;

final class Bla extends AbstractMigration
{
    ...
}

我收到错误:

Fatal error: Class 'Doctrine\Migrations\AbstractMigration' not found in /var/www/html/migrations/src/Files/Bla.php

当我查看 vendor 文件夹时,包就在那里。在我的 IDE 中,索引也工作正常,因此我可以 CMD+click 到 AbstractMigration 文件而不会出现问题。

我试过删除 vendor 文件夹、清除作曲家缓存、自动转储并重新安装所有包,但似乎没有任何效果。

我哪里出错了?

您需要包含 Composer 自动加载文件,否则您的应用程序不知道 类 存在什么。它是composer在你安装依赖时创建的一个文件,很多使用Composer的框架会自动为你包含这个文件,但如果你没有使用框架,你需要自己包含这个文件。

require __DIR__ . '/vendor/autoload.php';

你需要把它放在哪里取决于你的应用程序,但最好尽早加载,如果你有一个 bootstrap 文件,那将是放置它的地方。

你可以阅读它here