【问题标题】:PSR 4 autoload not finding classPSR 4 自动加载找不到类
【发布时间】: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 updatecomposer installcomposer 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


【解决方案1】:

自动加载部分应该是

  "autoload" : {
    "psr-4" : {"Filters\\" : "src/Filters"}
  }

【讨论】:

    猜你喜欢
    • 2018-06-01
    • 2019-04-20
    • 2017-02-01
    • 2017-01-02
    • 2016-05-18
    • 2015-07-20
    • 2019-01-31
    • 2018-09-03
    • 2023-01-31
    相关资源
    最近更新 更多