php返回对错,在PHP中返回错误对象的坏习惯?

PHP有两种主要的机制来指示和处理程序流中的错误:

选择哪个取决于您的个人喜好.例外是对象,因此如果您想要执行OOP或来自也使用例外的其他语言,您可能希望使用它们.基于非异常的错误处理适用于PHP可以发出的所有通知,警告和错误,以及您自己的那些变体.如果您想将这些转换为例外,请查看ErrorException.

但是,正如您已经提到的:例外是针对不可恢复的情况.它们不用于管理常规控制流程.因此,例外不是将错误消息发送回呼叫者的某种标准机制,例如,你不应该这样做:

class FooValidator

{

public function isValid($valueToValidate)

{

if ($this->satisfiesRules($valueToValidate) {

return true;

}

throw new ValidationException('Foo didnt satisfy rule Bar');

}

}

他们在呼叫者中尝试/捕捉它.验证失败是可恢复的情况.

class FooValidator

{

public function isValid($valueToValidate, Notification $notification)

{

if ($this->satisfiesRules($valueToValidate) {

return true;

}

$notification->addMessage('Foo didnt satisfy rule Bar');

return false;

}

}

在上面的示例中,Validator仅返回一个布尔值,但可以收集有关传递的Notification对象中验证失败原因的其他信息.这比从调用返回错误对象要清晰得多,因为我们不必检查返回类型.如果验证返回false,我们知道我们可以检查Notification对象.由于对象是通过引用传递的,因此我们不需要从调用中返回对象,而只需从调用者访问收集的消息.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值