2017-04-27 16 views
1

私はlaravelアプリを持っており、TwitterMatagramから最新の投稿を取得し、それらをデータベースに保存するためにSocialMediaControllerを作成しました。Laravel構造 - コントローラへの依存関係の挿入

普遍的なアクセスが可能で、IOC経由でアクセスできることが必要です。

public function doSomething(App\Http\Controllers\SocialMediaController 
    $SocialMedia) { 

    } 

しかし、このようなコントローラーを挿入するのが間違っている場合は、これらの方法を包括的に使用するための最善の方法は何ですか?

答えて

0

SocialMediaControllerにあるロジックを別のコントローラと共有したいと思うでしょうか?

コントローラインスタンスをサービスコンテナを使用して渡す代わりに、現在のロジックをサービスに移動することができます。独自のサービスを作成する方法については、LaravelドキュメントのService ContainerおよびService Providersを参照してください。

これを達成するもう1つの方法は、形質の使用です。どうすればいいのか、この回答を確認してくださいhttps://stackoverflow.com/a/30365349/1128918。あなたはこのようなものに終わるだろう:

trait SocialFeeder { 
    public function getLatestFromTwitter() { 
     ... 
    } 
} 

そして、そして、あなたはあなたのコントローラとその新しい形質を使用することができます。

class SocialMediaController extends Controller { 
    use SocialFeeder; 
    public function doSomething() { 
     ... 
     $tweets = $this->getLatestFromTwitter(); 
     ... 
    } 
} 
関連する問題