流明 - 删除重复的方法

Lumen - remove duplicate method

在 Lumen 中,我在基础 Controller.php class 和 Exception 文件夹中复制了方法 'respondError()' 和 Handler.php

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

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

这取决于你写的是什么模式,如果你使用base mvc,最好创建一个继承自base controller的controller,其余的继承自他,然后在其中编写你的代码。如果您使用存储库和服务,最好在基本服务中写上。

您应该将代码移至其自身 class:

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

为什么要添加您会要求的开销?将来您可能会发现想要向响应中添加详细信息,例如异常的调试回溯等,或者您可能想要 return 函数的响应:典型情况:您的控制器调用 API 函数,API 函数给出一些低级别错误,但控制器需要向其添加详细信息。为此使用框架错误 class,将使您的整个 API 依赖于框架,您应该尽可能避免这种情况。

您现在可以在任何地方使用代码:

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