Недавно я просматривал часть своего кода и заметил, что в рассеянности я оставил структуру, подобную следующей:
$guid = empty($subscription->guid) ? : $subscription->guid;
Теперь, он не делал то, что предполагалось, и это неправильно , но, поскольку это свойство всегда установлено, теперь оно работало нормально, и с 5.3 не было синтаксической ошибки из-за следующего изменения :
Начиная с PHP 5.3, можно опустить среднюю часть троичного оператора. Выражение expr1?: Expr3 возвращает expr1, если expr1 оценивается как TRUE, и expr3 в противном случае.
Я не знал об этом изменении, и теперь мне любопытно, использовать его или нет. Это то , что я был совершенно отсутствует из языков , как рубин , где вы можете сделать , например, a = b || c
чтобы получить либо b
или c
вместо «реальной» булево. Однако синтаксис, который они выбрали для троичного оператора, кажется мне несколько противоречивым. Должен ли я использовать это в производственном коде? Это определенно бросилось, когда я увидел это случайно.