【发布时间】:2018-02-05 07:41:51
【问题描述】:
我正在使用 Composer 的 PSR-4 来自动加载类,但它不会加载我的类。 每次我尝试使用我的一个类时,应用程序都会在没有任何错误的情况下死掉,即使它应该显示错误。
这是我的文件结构:
/
│ composer.lock
│ composer.json
│ index.php
├───src
│ Array.php
│ File.php
├───vendor
...
composer.json - 自动加载部分
"autoload": {
"psr-4": {
"FileManager\\": "src"
}
}
index.php 的开始
<?php
require(__DIR__ . '/vendor/autoload.php');
var_dump(class_exists('Array'), class_exists('Array', false));
var_dump(class_exists('File'), class_exists('File', false));
它会转储这个:
bool(false)
bool(false)
bool(false)
bool(false)
如果我添加
use FileManager\Array;
它会立即死亡。如果我添加
use FileManager\File;
它不会死,但它也不会识别 File 类。
我跑了
$ composer dumpautoload
有人可以帮我吗?
【问题讨论】:
-
您需要在 composer 文件中的 psr-4 声明中的目标后面添加一个斜杠:
"FileManager\\": "src/"。然后运行composer dump-autoload。 -
@MagnusEriksson 没有帮助。 autoload-psr4.php 仍然有这个数组:
'FileManager\\' => array($baseDir . '/src'),。即使在运行composer dump-autoload之后。 -
您在更改作曲家文件后是否运行
composer dump-autoload? -
@MagnusEriksson 是的,我做到了。
-
我只是查看了一个正常工作的 autoload_psr4.php 文件。那是正确的。这就是它的存储方式(我在该文件中也没有尾部斜杠)。您是否在文件的最顶部正确设置了文件
Array和File中的命名空间?namespace FileManager;?
标签: php composer-php autoload psr-4