【发布时间】:2014-09-12 05:46:56
【问题描述】:
我是使用 composer 的新手,并且在我的 composer.json 文件中创建了一个所需项目的列表。我可以在我的 index.php 引导文件中使用它们。
但是,我还希望能够使用 composers 自动加载器在供应商文件夹之外自动加载我自己的项目文件。我的文件夹结构如下:
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 文件所做的更改。感谢在 cmets 中发帖的 @Quasduck。
【问题讨论】:
-
您声明的名称空间与您正在使用的名称空间之间似乎存在脱节。您确定您要实例化的类不应该是
Project\Product\Product吗? -
它应该是
new \Project\Project;- 没有尾随.php。并且还要确保您在 composer.json 的自动加载部分进行更改后不要忘记运行composer dump-auto -o- 您的错误消息中的Product是从哪里来的?任何地方都涉及到 Product 类吗? -
@Quasdunk .php 是 SO 上的错字,不在代码本身中。当我运行您建议的
composer dump-auto -o并且课程加载正常时,问题已得到解决:) -
好的,很高兴它现在可以工作了 :) 祝你的项目好运!
-
@Quasdunk 请将您的解决方案作为答案发布,以便 Ozzy 将问题标记为已解决。
标签: php json composer-php autoload