连接的is_object不正常吗?

Mor*_*arm 2 php

这是问题所在:

  1. 当我写这个

    echo is_object($person->getCompany()) ? $person->getCompany()->getName() : 'test';
    
    Run Code Online (Sandbox Code Playgroud)

它让我"测试".

  1. 但是当我写这个

    echo 'Company: ' . PHP_EOL . is_object($person->getCompany()) ? $person->getCompany()->getName() : 'test';
    
    Run Code Online (Sandbox Code Playgroud)

它给我带来了错误

PHP致命错误:未捕获错误:在字符串上调用成员函数getName()

所以相同的代码,相同的变量,但第一次执行正确的部分(它不是一个对象),下次执行左边的部分?

Sch*_*eis 5

在第二种情况下,您的三元组的评估方式不同.

PHP正在检查是否'Company: ' . PHP_EOL . is_object($person->getCompany())为TRUE或FALSE而不是is_object.该is_object结果被追加到您的字符串,因为非空字符串始终是真实的,你三元的第一部分被评估造成的错误.