PHP:有什么方法可以检查对象是否为null,如果不是,则在一行中调用其方法之一?

时间:2019-04-22 12:53:45

标签: php swift null optional

我正在做一个应用程序(Swift中的客户端和PHP中的服务器)。我想知道在PHP中是否有任何方法可以像Swift一样:

myInstanceOrNil?.mymethod()

如果myInstanceOrNil不为nil,则调用我的方法;如果myInstanceOrNil为nil,则返回nil。

在我的php服务器中,我必须返回几个可选信息(例如,该用户可能关联了一个Facebook帐户,也许没有),

$member = new Member($id);   

echo json_encode([ 
    "id" => $member->getId(), 
    "fbId" => $member->getFbInformationsInstanceOrNull()->getFbId()
])

这里的问题,如果getFbInformationsInstanceOrNull()由于用户没有关联的fb帐户而返回null,则将由于null->getFbId()不存在而产生错误。在Swift中,我只需要做:

$member.getFbInformationsInstanceOrNull?().getFbId()

如何在PHP中轻松实现?

1 个答案:

答案 0 :(得分:1)

您需要empty

$fbId = $member->getFbInformationsInstanceOrNull();
if(!empty($fbId)){
echo json_encode([ 
    "id" => $member->getId(), 
    "fbId" =>  $fbId->getFbId()]);
}

如果没有id关联,则代码将无法执行,您可能需要向用户显示一些消息或相应地更新业务。

如果您还想通过null,可以这样做:

$fbId = $member->getFbInformationsInstanceOrNull();
echo json_encode([ 
        "id" => $member->getId(), 
        "fbId" =>  empty($fbId)?null:$fbId->getId() ]);
}

以下值被认为是空的:

  • “”(空字符串)
  • 0(0为整数)
  • 0.0(浮点数为0)
  • “ 0”(0作为字符串)
  • NULL
  • array()(一个空数组)

详细了解empty here