PHP - 在调用函数之前检查null对象的有效方法?

时间:2015-05-18 03:19:26

标签: php

我有这个:

$itemCode = $area->pickSpecificItemByType($type)->getItemCode();

$area->pickSpecificItemByType($type)可能会返回null。因此,调用getItemCode()是不可能的。

最干净,最有效的方法是什么?

还有比这更好的选择吗?

$itemCode = (!is_null($area->pickSpecificItemByType($type))) ?
     $area->pickSpecificItemByType($type)->getItemCode() : '';

4 个答案:

答案 0 :(得分:3)

您可以执行以下操作,而不是两次调用pickSpecificItemByType()。

$item = $area->pickSpecificItemByType($type);
$itemCode = ($item) ? $item->getItemCode() : '';

虽然引入了另一个变量($ item),但您在可读性方面获益。

答案 1 :(得分:0)

这样的事情会更好吗?

if( empty( $itemCode ) )
{
// $itemCode is empty.
}else{
// Do Something
}

答案 2 :(得分:0)

您可以使用以下代码。

$item = pickSpecificItemByType($type);

if( $item == '' )
    {
    // if $itemCode is empty.
    }else{
    // Do the stuff that you wanted to do if $item is not null
     $area->$item->getItemCode();
    }

我希望这会对你有所帮助。

答案 3 :(得分:-1)

$itemCode = @$area->pickSpecificItemByType($type)->getItemCode();

调用getItemCode()不是不可能的,只会发出错误。

'@'控制字符告诉PHP忽略警告。如果你进入这个警告状态,你将得到一个空字符串(这是你的三元代码所使用的),所以它是一个非常均匀的替代品。

http://php.net/manual/en/language.operators.errorcontrol.php