【发布时间】:2015-07-31 04:14:23
【问题描述】:
我不知道为什么我的 PSR-4 自动加载器不工作。
我的 composer.json 文件很简单
{
"require" : {
"abraham/twitteroauth" : "*"
},
"autoload" : {
"psr-4" : {"Filters\\" : "src"}
}
}
我的 PHP 文件,位于 src/Filters
namespace Filters;
class BlogFilter {
public function __construct()
{
return 'hello from the constructor';
}
}
在位于根目录的主文件中,我有以下内容
require 'vendor/autoload.php';
use Filters\BlogFilter;
$foo = new BlogFilter();
echo $foo;
但是当我尝试运行代码时,我得到了
致命错误:在中找不到类“Filters\BlogFilter” /var/www/html/dev/foo.php 在第 7 行
我不确定为什么它不起作用,我尝试运行 composer update、composer install 和 composer dumpautoload,但错误仍然出现。
我的完整工作结构如下
.
├── composer.json
├── composer.lock
├── foo.php
├── src
│ ├── Filters
│ │ └── BlogFilter.php
│ └── TestDir
└── vendor
├── abraham
│ └── twitteroauth
│ ├── autoload.php
│ ├── composer.json
│ ├── LICENSE.md
│ ├── phpunit.xml
│ ├── README.md
│ ├── src
│ │ ├── Util
│ │ │ └── JsonDecoder.php
│ │ └── Util.php
│ └── tests
├── autoload.php
└── composer
├── autoload_classmap.php
├── autoload_namespaces.php
├── autoload_psr4.php
├── autoload_real.php
├── ClassLoader.php
└── installed.json
【问题讨论】:
-
不应该是
"psr-4" : {"Filters\\" : "src/Filters"}吗? -
谢谢,现在好像可以了
-
刚刚添加了一个答案,因此可以将问题标记为已解决。
标签: php composer-php psr-4