2016-12-04 9 views
0

私はLaravel freamworkを使用するプレイヤーのためのシステムを作成しています。私は見るために私にいくつかのデータを返す1つの関数を持っています。私は3つのコントローラでこの関数を使用します(ただし、この関数を各コントローラファイルにコピーして貼り付けます)。この関数を1つのファイルに入れて、これらの3つのコントローラで使用できますか?どのように私は別のコントローラで同じ機能をコピーと過去を使わずに使うことができますか?Laravelクリーンコード

答えて

1

作成できるベースコントローラー:

一般的な方法を有する
<?php 

namespace App\Http\Controllers; 

class PlayersRepository 
{ 
    public function getPlayers() 
    { 
     return Player::all(); 
    } 
} 

、それが複数の拡張コントローラで使用することができる:リポジトリオブジェクトを注射する

<?php 

namespace App\Http\Controllers; 

class BaseController 
{ 
    protected $playersRepository; 

    public function __construct(PlayersRepository $playersRepository) 
    { 
     $this->playersRepository = $playersRepository; 
    } 
} 

ゲーム

<?php 

namespace App\Http\Controllers; 

class Games extends BaseController 
{ 
    public function index() 
    { 
     return view('games', ['players' => $this->playersRepository->getPlayers()]); 
    } 
} 
本の

マッチ説明とコードの

<?php 

namespace App\Http\Controllers; 

class Matches extends BaseController 
{ 
    public function show() 
    { 
     return view('matches', [ 
      'matches' => $matches, 

      'players' => $this->playersRepository->getPlayers() 
     ]); 
    } 
} 
+0

感謝。 ! :) –

0

モジュール(util)を作成するか、メインコントローラクラスを上書きします。

2

また、特性を使用してメソッドを共有することもできますが、形質は特性や型を記述するための方が一般的です。

ユーティリティクラスを作成するか、必要に応じて抽象コントローラクラスを使用する必要があります。

関連する問題