我有这个:
$itemCode = $area->pickSpecificItemByType($type)->getItemCode();
$area->pickSpecificItemByType($type)
可能会返回null。因此,调用getItemCode()
是不可能的。
最干净,最有效的方法是什么?
还有比这更好的选择吗?
$itemCode = (!is_null($area->pickSpecificItemByType($type))) ?
$area->pickSpecificItemByType($type)->getItemCode() : '';
答案 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