2016-12-22 6 views
1

Что я пытаюсь сделать - 1) Контроллер будет зависеть от обслуживания для логики и всего прочего. 2) Служба зависит от хранилища для доступа к базе данных. 3) Контроллер получит услугу в качестве зависимости. 4) Служба получит репозиторий в качестве зависимости.Возможно ли внедрить репозиторий в качестве зависимости в файле службы laravel?

Мой класс обслуживание -

class AnimeService implements IAnimeService{ 

    protected $animeRepository; 

    public function _construct(IAnimeRepository $_animeRepository) {  
     $this->animeRepository = $_animeRepository; 
    } 

    public function add(Anime $anime) {  
     return $this->animeRepository->add($anime); 
    } 
} 

Проблема в том, -

Call to a member function add() on null 

, который, как ожидается, - как _construct никогда не вызывается.

Кстати, от моего AppServiceProvider

public function register() 
    { 
     $this->app->bind('\App\Services\Interfaces\IAnimeService', '\App\Services\Implementations\AnimeService'); 
     $this->app->bind('\App\Repositories\Interfaces\IAnimeRepository', '\App\Repositories\Implementations\AnimeRepository'); 
    } 

Мои вопросы - 1) Что я могу сделать в этой ситуации, чтобы сделать мою работу службы?

2) Какая практика?

3) Какие еще существуют способы достижения того, что я пытаюсь сделать?

спасибо.

ответ

1

Конструктор должен быть назван __construct и не _construct, с двумя символами подчеркивания :) См РНР документы: http://php.net/manual/en/language.oop5.decon.php

И если вы инъекции AnimeService в конструкторе контроллера, Laravel должен автоматически решить зависимости, поэтому он должен работать с тем, что у вас здесь, только путем определения имени метода конструктора :)

+0

Чертов опечатки. :( Это сработало Большое спасибо.: D –

+0

Да, опечатки бывают для всех;) И я уверен, что все раздражены, когда они узнают, что это была ошибка xD – martindilling

 Смежные вопросы

  • Нет связанных вопросов^_^