用于应用程序文件的编写器PSR-4


Composer PSR-4 for application files

我是使用作曲家的新手,并在我的作曲家中创建了一个所需项目的列表。json文件。我可以在我的index.php引导文件中使用它们。

然而,我也希望能够自动加载我自己的项目文件以外的供应商文件夹使用作曲家自动加载器。我的文件夹结构如下:

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

我做错了什么?或者我可以不使用作曲家自动加载加载我的应用程序文件?

编辑原来我需要运行composer dump-auto -o来刷新我对composer.json文件所做的更改。感谢在评论中发帖的@Quasduck。

发表评论作为回答

当你修改composer.json文件中的自动加载部分时,一定要确保通过运行

来更新自动加载器。
$ composer dump-autoload -o

在每个composer updatecomposer install之后也自动运行。

还要注意(可选的,但推荐的)-o参数,它告诉Composer优化自动加载。这基本上意味着PSR-0/4自动加载(就像在您的示例中一样)被转换为简单的类映射。这可以显著加快自动加载速度,特别是在较大的项目中。

更新加载器也可以解决问题,当你更新,重命名或移动一个类,但你的应用程序似乎没有选择。