Widziałem to dzisiaj w jakimś kodzie PHP:
$items = $items ?: $this->_handle->result('next', $this->_result, $this);
Nie znam ?:
operatora używanego tutaj. Wygląda jak operator trójskładnikowy, ale pominięto wyrażenie służące do oceny, czy predykat jest prawdziwy. Co to znaczy?
php
coding-style
conditional-operator
language-construct
alpha_juno
źródło
źródło
null
lub coś. Tylko||
. Takblah || 'default'
?||
operator zawsze zwraca wartość logiczną.Zobacz dokumenty :
źródło
expr2
tak, że po prostu zniknął i nie jest oceniany.$this->expensiveComputation() ?: "nope"
nie jest identyczny z$this->expensiveComputation() ? $this->expensiveComputation() : "nope"
- wyrażenie1 jest oceniane tylko raz.Uważaj na tablice. Następnie musimy napisać zmienną sprawdzającą
?
, ponieważ:Zaktualizowano
Z RFC. W przyszłości (w PHP 7) operator Null Coalesce Operator to zrobi, na przykład:
źródło
Kolejna ważna kwestia: Operator Elvisa przerywa proces tokenizacji Zend Opcache. Znalazłem to na własnej skórze! Chociaż można to naprawić w późniejszych wersjach, mogę potwierdzić, że ten problem występuje w PHP 5.5.38 (z wbudowanym Zend Opcache v7.0.6-dev).
Jeśli okaże się, że niektóre pliki „odmawiają” buforowania w Zend Opcache, może to być jeden z powodów ... Mam nadzieję, że to pomaga!
źródło
Tak, to nowość w PHP 5.3. Zwraca wartość wyrażenia testowego, jeśli jest ono oceniane jako PRAWDA, lub wartość alternatywną, jeśli jest oceniane jako FAŁSZ.
źródło
TRUE
.