2017-09-10 1 views
0

ルーメンでは、Controller.phpクラスのメソッド 'respondError()'とExceptionフォルダーのHandler.phpが重複しています。ルーメン - 重複するメソッドを削除する

重複を避けるため、このメソッドをどのクラスに簡単にアクセスできるようにするにはどうすればよいですか?あなたは基本MVCを使用している場合

public function respondError($errorType = '', $message = null, $statusCode = 500) 
{ 
    return response([ 
     'success' => false, 
     'error_type' => $errorType, 
     'errors'  => [], 
     'message' => $message, 
    ], $statusCode); 
} 

答えて

1

あなたは、独自のクラスにコードを移動する必要があります

class ErrorResponse { 
    protected $errorType = null; 
    protected $message = null; 
    protected $statusCode = null; 

    public __construct($errorType = '', $message = null, $statusCode = 500) { 
     $this->errorType = $errorType; 
     $this->message = $message; 
     $this->statusCode = statusCode ; 
    } 

    public getResponse() { 
     return response([ 
      'success' => false, 
      'error_type' => $this->errorType, 
      'errors'  => [], 
      'message' => $this->message, 
     ], $this->statusCode); 
    } 
} 

なぜあなたは、あなたが尋ねてきますオーバーヘッドを追加する必要がありますか?今後、レスポンスに詳細を追加したいと思うかもしれません。典型的な状況:あなたのコントローラがAPI関数を呼び出す、API関数がいくつかの低レベルのエラーを出すが、コントローラはその関数に詳細を追加する必要がある。このためにフレームワークエラークラスを使用すると、フレームワーク全体に依存するAPI全体になります。できるだけ避けるようにしてください。

あなたはどこからでも、今のコードを使用することができます。

$error = new ErrorResponse('bad error', 'something went wrong!'); 
return $error->getResponse(); 
0

それはあなたが書いているかのパターンに依存し、ベースコントローラと、彼からの残りの部分から継承し、その中にあなたのコードを書いてコントローラを作成することをお勧めします。リポジトリとサービスを使用する場合は、基本サービスでそこに書き込む方がよいでしょう。