以下代码会被视为“好”做法吗?
它是包的RPC端点的控制器。 我们的想法是轻松覆盖/扩展包含该软件包的特定项目的验证或授权。
你能说这些保护条款或方法吗? 有一个方法只是为了检查某些东西并在出现问题时抛出异常,这是一个好主意吗?
代码看起来很干净,但我会就此得到一些建议:)
public function doSomethingWithCustomer() {
try {
$this->validate();
$this->authorize();
$customer = $this->resolveCustomer();
$customer->doSomething();
} catch (HttpException $e) {
$this->logger->error($e->getMessage());
return $this->errorResponse($e->getStatusCode(), $e->getMessage());
}
}
protected function validate()
{
// Validate input
if (!$valid) {
throw new BadRequestHttpException('Invalid email address');
}
}
protected function authorize()
{
// Do some authorization checking
if ($notAuthorized) {
throw new AccessDeniedHttpException('Not authorized');
}
}
protected function resolveCustomer()
{
$customer = Customer::load(1);
if (is_null($customer) {
throw new NotFoundHttpException('Customer not found');
}
return $customer;
}
答案 0 :(得分:1)
不,由于以下原因,这是一种不好的做法:
Here是关于后卫条款的一篇文章。我希望它能帮助你更好地理解它们。