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); 
    } 
} 

問題がある - _constructが呼び出されないさんとして - 期待されている

Call to a member function add() on null 

ところで、私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)私がしようとしていることを達成するために他にどんな方法がありますか?

ありがとうございます。コンストラクタは2つのアンダースコアで、__constructなく_construct名前を付ける必要があり

答えて

1

:) PHPのドキュメントを参照してください。http://php.net/manual/en/language.oop5.decon.php

そして、あなたは、コントローラのコンストラクタでAnimeServiceを注入している場合、Laravelは、自動的に依存関係を解決する必要がありますそのため、コンストラクタメソッドの名前を固定するだけで、ここにあるものと一緒に動作するはずです。

+0

Damn typo's。 : それは働いた ありがとうたくさん:D –

+0

はい、すべての人のためにタイプミス;)と私はかなり誰もが迷惑だと確信している間違いxDだった – martindilling

関連する問題