2015-05-19 83 views
4

我不知道爲什麼我的PSR-4 auotloader不工作。PSR 4自動加載找不到類

我composer.json文件只是

{ 
    "require" : { 
    "abraham/twitteroauth" : "*" 
    }, 
    "autoload" : { 
    "psr-4" : {"Filters\\" : "src"} 
    } 
} 

我的PHP文件,該文件被放在src /過濾器

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

它不應該是' 「PSR-4」:{ 「過濾器\\」:「SRC /過濾器「}」? –

+0

謝謝,現在似乎工作 – user9418

+0

只是添加了一個答案,所以這個問題可以被標記爲已解決。 –

回答

3

自動加載的部分應該

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