微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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 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

解决方法:

自动加载部分应该是

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐