Я пытаюсь создать хранилище и автоматически внедрить его в некоторые из моих контроллеров. Я использую 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 по какой-то причине не может автоматически внедрить мою зависимость в контроллер.
Ответ был до боли очевиден.
Было сказано ConsumerRepositoryInterface
не существовало, потому что не существовало. Как только я сделал настоящий интерфейс и настроил EloquentConsumerRepository для его реализации, все заработало.
Других решений пока нет …