流明 - 删除重复的方法

时间:2017-09-10 17:48:50

标签: php laravel lumen

在Lumen中,我在基础Controller.php类中有重复的方法'respondError()',在Exception文件夹中有Handler.php

为避免重复,您建议将此方法移至何处,以便任何类都可以轻松访问?

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

2 个答案:

答案 0 :(得分:1)

这取决于你正在编写什么模式,如果你使用base mvc,最好创建一个从基本控制器继承而来自他的其余部分的控制器,并在其中写入你的代码。如果您使用存储库和服务,最好在基本服务中写入。

答案 1 :(得分: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();