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

PHP : any way to check if an object is null and if not, call one of its method, in one line?

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

myInstanceOrNil?.mymethod()

如果 myInstanceOrNil 不为零,则调用我的方法,或者 return 如果 myInstanceOrNil 为零,则为零。

在我的 php 服务器中,我必须 return 几个可选信息(例如,用户可能关联了 facebook 帐户,也可能没有),

$member = new Member($id);   

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

这里的问题,如果getFbInformationsInstanceOrNull() returns null,因为用户没有关联的fb账号,会产生错误,因为null->getFbId()不存在。在 Swift 中,我只需要做:

$member.getFbInformationsInstanceOrNull?().getFbId()

如何在 PHP 中轻松完成?

你需要 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 作为字符串)
  • 错误
  • array()(空数组)

阅读更多关于 empty here