在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);
}
答案 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();