当前位置:  开发笔记 > 编程语言 > 正文

正确处理PHP 7返回类型的方法

如何解决《正确处理PHP7返回类型的方法》经验,为你挑选了3个好方法。

我正忙着创建一个应用程序,我想使用PHP 7返回类型.现在我在php.net上读到,这是一个设计决定,null在定义返回类型时不允许返回.

处理这个问题的正确方法是什么?

一个选项是try ... catch块:

public function getMyObject() : MyObject
{ 
     return null;
}

try
{
    getMyObject();
}
catch(Exception $e)
{
    //Catch the exception
}

我对此没有很好的感觉,因为我的代码将是一个巨大的尝试... catch块因为我需要为每个返回对象的方法编写一个try ... catch块.

该空对象模式是一个很好的解决办法,但我不喜欢这个主意,以创建一个NullObject在我的应用程序的每个对象.有没有正确的方法来做到这一点?



1> Niet the Dar..:

如果你的代码希望返回一个类的实例,在这种情况下MyObject,但它没有,那么这确实是一个例外,应该这样处理.

但是,您应该自己抛出此异常.

public function getMyObject() : MyObject
{
    throw new MyCustomException("Cannot get my object");
}

然后,您可以捕获该特定异常并相应地继续.



2> Fabian Schme..:

我对此没有很好的感觉,因为我的代码将是一个巨大的try/catch块,因为我需要为每个返回对象的方法编写一个try/catch块.

替代方法(使用您的代码)将始终检查返回的值,null以避免错误null用作对象.

使用异常更具表现力,并且可以及早发现错误,这是一件好事.因此,要么确保您的方法始终返回一个对象,要么在它无法履行合同时抛出异常.否则返回类型没有实际值.


它会让你感觉如何.也许这是避免try/catch块的习惯,但我认为这是接受行为并利用它的好处的好时机.

3> nikita2206..:

您可以使用Option数据类型.

它是一种具有SomethingNothing作为包裹值的类型.

你可以找到更详尽的描述在这里和PHP的开放实现一个在这里

PS请不要为这种逻辑使用异常,输出参数或其他方法,这对于工作来说是错误的工具.

推荐阅读
手机用户2402851335
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有