2014-12-02 68 views
1

我試圖創建一個存儲庫,並讓它自動注入到我的一些控制器。我使用Laravel 4.1和PHP 5.3.10Laravel自動DI不工作

我得到錯誤信息Class ConsumerRepositoryInterface does not exist

我設置一個服務提供商,像這樣......

use Illuminate\Support\ServiceProvider; 

class ConsumerServiceProvider extends ServiceProvider { 

    public function register() 
    { 
     $this->app->bind('ConsumerRepositoryInterface', function() 
     { 
      return new EloquentConsumerRepository(new Consumer); 
     }); 
    } 

} 

我試圖把它注射像這樣進入我的控制器。

private $consumer; 

public function __construct(ConsumerRepositoryInterface $consumer) 
{ 
    $this->consumer = $consumer; 
} 

我已經得到了供應商陣列中config\app.php註冊爲ConsumerServiceProvider服務提供商。我添加了app/providersapp/repositories,我將服務提供程序和存儲庫分別添加到composer.json文件的自動加載類映射部分,並運行composer dump-autoload

混亂的部分是設置了我的控制,像這樣工作得很好...

private $consumer; 

public function __construct() 
{ 
    $this->consumer = App::make('ConsumerRepositoryInterface'); 
} 

這告訴我的服務提供商和存儲庫無一不精,Laravel是出於某種原因無法自動注入我的依賴進入控制器。

回答

0

答案很明顯。

這是說ConsumerRepositoryInterface不存在,因爲它不存在。只要我創建了一個實際的界面並設置了EloquentConsumerRepository來實現它,一切都奏效了。