Composer PSR-4用于应用程序文件

时间:2014-07-21 16:20:18

标签: php json composer-php autoload

我是使用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。

1 个答案:

答案 0 :(得分:3)

发表评论作为答案

每当您修改composer.json文件中的自动加载部分时,请始终确保在运行

之后更新自动加载器
$ composer dump-autoload -o

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

还要注意(可选的,但推荐的)-o param,它告诉Composer优化自动加载。这基本上意味着PSR-0/4自动加载(如您的示例中所示)将转换为简单classmaps。这可以显着加快自动加载速度,尤其是在大型项目中。

更新自动加载程序还可以解决更新,重命名或移动类时遇到的问题,但您的应用程序似乎无法解决问题。