我是使用composer的新手,并在我的composer.json文件中创建了所需项目的列表。我可以在index.php bootstrap文件中使用它们。
但是我希望能够使用composers autoloader在vendor文件夹之外自动加载我自己的项目文件。我的文件夹结构如下:
vendor/
project/
Project.php
index.php
composer.json
的index.php
<?php
require 'vendor/autoload.php';
new \Project\Project;
Project.php
<?php
namespace Project;
class Project {
}
composer.json
{
"autoload": {
"psr-4": {
"Project\\": "project"
}
}
}
这会不断出现以下错误:
Fatal error: Class 'Product\Product' not found in index.php on line 5
我做错了什么?或者我可以不使用composers autoload加载我的应用程序文件吗?
修改
事实证明我需要运行composer dump-auto -o
来刷新我对composer.json
文件所做的更改。感谢在评论中发布的@Quasduck。
答案 0 :(得分:3)
发表评论作为答案
每当您修改composer.json
文件中的自动加载部分时,请始终确保在运行
$ composer dump-autoload -o
这也会在每个composer update
或composer install
后自动运行。
还要注意(可选的,但推荐的)-o
param,它告诉Composer优化自动加载。这基本上意味着PSR-0/4自动加载(如您的示例中所示)将转换为简单classmaps。这可以显着加快自动加载速度,尤其是在大型项目中。
更新自动加载程序还可以解决更新,重命名或移动类时遇到的问题,但您的应用程序似乎无法解决问题。