Laravel auto DI не работает

Я пытаюсь создать хранилище и автоматически внедрить его в некоторые из моих контроллеров. Я использую Laravel 4.1 и PHP 5.3.10

Я получаю сообщение об ошибке 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 по какой-то причине не может автоматически внедрить мою зависимость в контроллер.

1

Решение

Ответ был до боли очевиден.

Было сказано ConsumerRepositoryInterface не существовало, потому что не существовало. Как только я сделал настоящий интерфейс и настроил EloquentConsumerRepository для его реализации, все заработало.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]