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