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
我很难看出我在自动加载器上做错了什么。我的文件夹结构如下:
| - 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