我試圖創建一個存儲庫,並讓它自動注入到我的一些控制器。我使用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/providers
和app/repositories
,我將服務提供程序和存儲庫分別添加到composer.json
文件的自動加載類映射部分,並運行composer dump-autoload
。
混亂的部分是設置了我的控制,像這樣工作得很好...
private $consumer;
public function __construct()
{
$this->consumer = App::make('ConsumerRepositoryInterface');
}
這告訴我的服務提供商和存儲庫無一不精,Laravel是出於某種原因無法自動注入我的依賴進入控制器。