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

标签 php oop php-7

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

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

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

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

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

我对此感觉不太好,因为我的代码将是一个巨大的 try...catch block ,因为我需要为每个返回对象的方法编写一个 try...catch block 。

Null Object Pattern是一个很好的解决方案,但我不喜欢为我的应用程序中的每个对象创建一个 NullObject 的想法。 有没有正确的方法来做到这一点?

最佳答案

如果您的代码希望返回一个类的实例,在本例中为 MyObject,但它没有返回,那么这确实是一个异常,应该这样处理。

但是,您应该自己抛出这个异常。

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

然后您可以捕获该特定异常并进行相应处理。

关于php - 处理 PHP 7 返回类型的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34268063/

相关文章:

php - mysql数据库存储存储数据的最佳实践,大量少量或少量大量

php - 如何创建使用标签、类别或标题仅搜索媒体库中的视频的 WordPress 搜索表单

javascript - 将参数传递给 PHP 表超链接

c++ - 如何将类中的公共(public)函数作为另一个函数的参数传递。

java - java中的继承行为

php - MYSQLI_CLIENT_SSL 和 MYSQLI_OPT_SSL_VERIFY_SERVER_CERT 有什么区别?

PHP:如何隐藏/显示 HTML block

c# - Resharper 的 "Object allocation (evident)"是什么意思?

yii2 - PHP7 中旧哈希盐的 crypt() 回退

elasticsearch - 在群集中找不到事件的节点