Тернарный оператор PHP, возвращающий другое значение только из-за перевода строк

#php #formatting #ternary-operator

#php #форматирование #тернарный оператор

Вопрос:

Может кто-нибудь просветить меня, что может быть не так в следующем коде?

 $wOwner = ($owner instanceof IIdentity ? $owner->getName() : $owner);
var_dump($wOwner);
$wOwner = ($owner instanceof IIdenity
        ? $owner->getName()
        : $owner);
var_dump($wOwner);
 

Я получаю следующий вывод

 string '1555' (length=4)
object(Member)[2] //snipping out the object properties
 

Я заинтересован в расширении такого типа выражения при конкатенации строк, например.

 $msg = 'Answer is' . ( $expr ? 'yes' : 'no' );
 

Комментарии:

1. Почему бы вам не использовать простой оператор if — else?

2. Я использую его, но мне просто интересно, почему эти два результата дают разные выходные данные, когда единственным отличием является символ новой строки?


Ответ №1:

Это никак не связано с новой строкой, просто потому IIdentity , что отличается от IIdenity !