我正忙着创建一个应用程序,我想使用PHP 7返回类型.现在我在php.net上读到,这是一个设计决定,null在定义返回类型时不允许返回.
处理这个问题的正确方法是什么?
一个选项是try ... catch块:
public function getMyObject() : MyObject
{
return null;
}
try
{
getMyObject();
}
catch(Exception $e)
{
//Catch the exception
}
Run Code Online (Sandbox Code Playgroud)
我对此没有很好的感觉,因为我的代码将是一个巨大的尝试... catch块因为我需要为每个返回对象的方法编写一个try ... catch块.
该空对象模式是一个很好的解决办法,但我不喜欢这个主意,以创建一个NullObject在我的应用程序的每个对象.有没有正确的方法来做到这一点?
Nie*_*sol 27
如果你的代码希望返回一个类的实例,在这种情况下MyObject,但它没有,那么这确实是一个例外,应该这样处理.
但是,您应该自己抛出此异常.
public function getMyObject() : MyObject
{
throw new MyCustomException("Cannot get my object");
}
Run Code Online (Sandbox Code Playgroud)
然后,您可以捕获该特定异常并相应地继续.
我对此没有很好的感觉,因为我的代码将是一个巨大的try/catch块,因为我需要为每个返回对象的方法编写一个try/catch块.
替代方法(使用您的代码)将始终检查返回的值,null以避免错误null用作对象.
使用异常更具表现力,并且可以及早发现错误,这是一件好事.因此,要么确保您的方法始终返回一个对象,要么在它无法履行合同时抛出异常.否则返回类型没有实际值.
| 归档时间: |
|
| 查看次数: |
13059 次 |
| 最近记录: |