我正在尝试在收到非200响应时记录一些调试消息。响应具有response
属性,该属性可以是字符串,也可以是具有消息属性的object
。
这是我的日志声明:
\Log::info('Caller non 200 response received. \nMessage' . is_object($response->response)?$response->response->message : $response->response);
我得到了
尝试获取非对象的属性
在上面提到的那一行。我改成了:
\Log::info('Caller non 200 response received. \nMessage' . (is_object($response->response)?$response->response->message : $response->response) );
注意三元运算符周围的括号,它可以工作。我错过了什么?
同样在这种情况下,我从false
来电回复is_object
。
答案 0 :(得分:0)
好的,事实证明,当你这样做时:
$val = 'some string ' . is_object($notObj) ? 'yes' : 'no'
将评估$val
至 某些字符串是 而不是no
,因为$notObj
不是对象而is_object
1}}将返回false
。
因为我们将字符串与is_object
的输出连接起来,所以这就是评估为true
的原因。
为了克服这个问题,你需要在三元运算符周围加上括号:
$val = 'some string ' . (is_object($notObj) ? 'yes' : 'no')
现在,这将成功评估$val
至 某些字符串否 。
感谢@Ultimater对此进行解释。