php - PSR 4 自动加载找不到类

标签 php composer-php psr-4

我不确定为什么我的 PSR-4 auotloader 不工作。

我的 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;

但是当我尝试运行我得到的代码时

Fatal error: Class 'Filters\BlogFilter' not found in /var/www/html/dev/foo.php on line 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

最佳答案

自动加载部分应该是

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

关于php - PSR 4 自动加载找不到类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30323854/

相关文章:

composer-php - Gitlab私有(private)仓库通过composer

php - Symfony 2 命名空间错误仅在生产中出现(“尝试加载类...)

php - 是否可以在同一个文件中的同一个命名空间下使用多个类

php - 这么多更新查询

php - 对 Mysql 数组进行切片

docker - 为什么 Composer create-project for Drupal 在 WSL2 中失败?

ssl - Composer --> 错误 :14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

php - 在 laravel 5 app.php 中使用 autoload psr-4 定义的命名空间给出未找到的错误

php - Zend Framework正常查询Zend_Db_Table

php - WordPress - 仅向帖子作者显示管理栏