Vi esto hoy en algún código PHP:
$items = $items ?: $this->_handle->result('next', $this->_result, $this);
No estoy familiarizado con el ?:
operador que se utiliza aquí. Parece un operador ternario, pero se ha omitido la expresión para evaluar si el predicado es verdadero. Qué significa eso?
php
coding-style
conditional-operator
language-construct
alpha_juno
fuente
fuente
null
o cualquier cosa. Solo||
. Entoncesblah || 'default'
?||
operador siempre devuelve un booleano.Ver los documentos :
fuente
expr2
es que simplemente desapareció y no se evalúa.$this->expensiveComputation() ?: "nope"
no es idéntico a$this->expensiveComputation() ? $this->expensiveComputation() : "nope"
- expr1 solo se evalúa una vez.Tenga cuidado con las matrices. Debemos escribir una variable de verificación después
?
, porque:Actualizado
De RFC. En el futuro (en PHP 7) el operador Null Coalesce Operator lo hará, por ejemplo:
fuente
Otra consideración importante: el operador de Elvis interrumpe el proceso de tokenización de Zend Opcache. ¡Encontré esto de la manera difícil! Si bien esto puede haberse solucionado en versiones posteriores, puedo confirmar que este problema existe en PHP 5.5.38 (con Zend Opcache v7.0.6-dev incorporado).
Si encuentra que algunos de sus archivos "se niegan" a almacenarse en caché en Zend Opcache, esta puede ser una de las razones ... ¡Espero que esto ayude!
fuente
Sí, esto es nuevo en PHP 5.3. Devuelve el valor de la expresión de prueba si se evalúa como VERDADERO o el valor alternativo si se evalúa como FALSO.
fuente
TRUE
.