Saya melihat ini hari ini di beberapa kode PHP:
$items = $items ?: $this->_handle->result('next', $this->_result, $this);
Saya tidak terbiasa dengan ?:
operator yang digunakan di sini. Sepertinya operator ternary, tetapi ekspresi untuk mengevaluasi apakah predikat itu benar telah dihilangkan. Apa artinya?
php
coding-style
conditional-operator
language-construct
alpha_juno
sumber
sumber
null
atau apa pun. Katakan saja '||
. Jadiblah || 'default'
?||
operator selalu mengembalikan boolean.Lihat dokumen :
sumber
expr2
adalah bahwa itu menghilang begitu saja, dan tidak dievaluasi.$this->expensiveComputation() ?: "nope"
tidak identik dengan$this->expensiveComputation() ? $this->expensiveComputation() : "nope"
- expr1 hanya dievaluasi sekali.Hati-hati dengan array. Kita harus menulis variabel pengecekan setelah
?
, karena:Diperbarui
Dari RFC. Di masa mendatang (dalam PHP 7) operator Null Coalesce Operator akan melakukannya, misalnya:
sumber
Pertimbangan penting lainnya: Operator Elvis memecah proses tokenisasi Zend Opcache. Saya menemukan ini dengan cara yang sulit! Sementara ini mungkin telah diperbaiki di versi yang lebih baru, saya dapat mengkonfirmasi masalah ini ada di PHP 5.5.38 (dengan Zend Opcache v7.0.6-dev yang sudah terpasang).
Jika Anda menemukan bahwa beberapa file Anda 'menolak' di-cache di Zend Opcache, ini mungkin salah satu alasannya ... Semoga ini bisa membantu!
sumber
Ya, ini baru dalam PHP 5.3. Ini mengembalikan nilai ekspresi tes jika dievaluasi sebagai BENAR, atau nilai alternatif jika dievaluasi sebagai FALSE.
sumber
TRUE
.