流明 - 删除重复的方法
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();
在 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();