Уточнение оператора PHP Ternary

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

Ниже приведен пример:

echo ($something->message ? $something->message : 'no message'); 

как вы можете видеть, если сообщение $ something-> верное, мы возвращаем сообщение $ something->, но зачем писать его дважды? Есть ли способ сделать что-то вроде:

 echo ($something->message ? this : 'no message'); 

Теперь я не очень разбираюсь в теории программирования, так что возможно, что есть причина, по которой первое не может быть связано с чем-то вроде этого, но почему бы и нет? Не приведет ли это к потоку использование тернарного оператора? Для чего-то вроде моего примера это довольно бесполезно, но предположим, что это

 echo (function(another_function($variable)) ? function(another_function($variable)) : 'false'); 

Я не могу найти способ сделать это, поэтому я предполагаю, что это невозможно, если я ошибаюсь, сообщите мне, иначе: почему бы и нет? Почему это невозможно, какова техническая причина, или это просто то, чего никогда не было? Должен ли я объявлять его как переменную, а затем тестировать эту переменную?

    Начиная с PHP 5.3, можно исключить среднюю часть тернарного оператора. Expression expr1?: Expr3 возвращает expr1, если expr1 имеет значение TRUE и expr3 в противном случае.

    Источник

    Например

     $used_value = function1() ?: $default_value; 

    Такой же как

     $check_value = function1(); //doesn't re-evaluate function1() if( $check_value ) { $used_value = $check_value; } else { $used_value = $default_value; } 

    Слово для мудрых

    Если вы будете в зависимости от typecasting к TRUE , важно понять, что WILE прибегает к TRUE а что – нет. Вероятно, стоит разобраться в жонглировании типа PHP и чтении таблиц преобразования типов . Например, (bool)array() является FALSE .