Eu vi isso hoje em algum código PHP:
$items = $items ?: $this->_handle->result('next', $this->_result, $this);
Não estou familiarizado com o ?:
operador que está sendo usado aqui. Parece um operador ternário, mas a expressão para avaliar se o predicado é verdadeiro foi omitida. O que isso significa?
php
coding-style
conditional-operator
language-construct
alpha_juno
fonte
fonte
null
ou qualquer coisa. Apenas dizendo||
. Entãoblah || 'default'
?||
operador sempre retorna um booleano.Veja os documentos :
fonte
expr2
é que ele simplesmente desapareceu e não é avaliado.$this->expensiveComputation() ?: "nope"
não é idêntico a$this->expensiveComputation() ? $this->expensiveComputation() : "nope"
- expr1 é avaliado apenas uma vez.Cuidado com matrizes. Devemos escrever uma variável de verificação depois
?
, porque:Atualizada
Do RFC. No futuro (no PHP 7), o operador Null Coalesce Operator fará isso, por exemplo:
fonte
Outra consideração importante: o Elvis Operator interrompe o processo de tokenização do Zend Opcache. Achei isso da maneira mais difícil! Embora isso possa ter sido corrigido em versões posteriores, posso confirmar que esse problema existe no PHP 5.5.38 (com o Zend Opcache integrado v7.0.6-dev).
Se você achar que alguns de seus arquivos 'recusam' ser armazenados em cache no Zend Opcache, esse pode ser um dos motivos ... Espero que isso ajude!
fonte
Sim, isso é novo no PHP 5.3. Retorna o valor da expressão de teste se for avaliado como TRUE ou o valor alternativo se for avaliado como FALSE.
fonte
TRUE
.