php方法后面跟个 bool,方法返回状态:bool,string,const…(PHP)

问题是:

有一种方法可以有一个成功的结果(这可能会变成更成功的结果)或者一个“有问题的”结果。后者意味着操作失败,但知道原因也很重要。

public function login($name, $password)

{

if (successful_authentication)

{

report success

}

else

{

report failure, explain why (e.g. wrong name/pass, user banned)

}

}

对于成功和失败来说,返回真假是微不足道的,但是如何报告失败的原因呢?

返回true或false并编写另一个方法(getStatus())以获得特定的问题:这对我来说有点尴尬

使用异常:由于被禁止的用户并不例外(例外情况是当用户在本网站上以另一位作者的身份键入时死亡),在这些情况下使用异常是完全错误的(但是如果查询失败,该方法可能会引发数据库异常)

$loginStatus = $auth->login('name', 'pass');

if ($loginStatus === true)

{

doSomething();

}

else

{

if ($loginStatus == 'wrong_login_data')

...

elseif ($loginStatus == 'banned')

...

// or with an array full of error messages:

echo $erroMessages[$loginStatus];

}

返回一个通用状态(state)对象:非常优雅的解决方案,而且可以证明将来的情况(如果状态的数量不同或以后应该返回其他数据,则没有问题),可能是最好的解决方案:

$loginStatus = $auth->login('name', 'pass')

if ($loginStatus->isSuccess)

...

else

echo $errorMessages[$loginStatus->errorCode]; // $errorMessages as by the previous example

上面两个中的任何一个,但不是纯字符串而是类常量:

$loginStatus = $auth->login('name', 'pass')

if ($loginStatus->isSuccess)

...

elseif ($loginStatus->errorCode == Auth::ERR_USER_BANNED)

...

这样就不需要在文档中解释错误代码,而且感觉也更“自然”(至少对我来说)。

问题是:

你会用(上述的)什么方法或其他方法?从长远来看,什么已经被证明是一个好方法?

提前谢谢你!

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值