?: оператор («оператор Элвиса») в PHP


Answers

См. Документы :

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

Question

Я видел это сегодня в некотором PHP-коде:

$items = $items ?: $this->_handle->result('next', $this->_result, $this);

Я не знаком с оператором ?: Здесь. Он выглядит как тернарный оператор, но выражение для оценки, если предикат является истинным, опущено. Что это значит?




Еще одно важное соображение: Оператор Элвиса нарушает процесс токенизации Zend Opcache. Я нашел это трудным путем! Хотя это может быть исправлено в более поздних версиях, я могу подтвердить, что эта проблема существует в PHP 5.5.38 (с встроенным Zend Opcache v7.0.6-dev).

Если вы обнаружите, что некоторые из ваших файлов «отказываются» кэшироваться в Zend Opcache, это может быть одной из причин ... Надеюсь, это поможет!