Opérateur Elvis (?:) Décrypté en PHP
Au plus profond d'une base de code PHP complexe, vous rencontrerez peut-être un mystérieux opérateur : le ? : opérateur. Surnommé « l'opérateur Elvis », vous vous demandez peut-être « quel est son objectif ? »
L'opérateur ?:, en substance, évalue son opérande de gauche si celui-ci est considéré comme « vrai », et l'opérateur ?: opérande correct sinon. En d'autres termes :
foo ?: bar
est à peu près équivalent à l'opérateur ternaire :
foo ? foo : bar
ou dans une instruction if-else traditionnelle :
if (foo) { foo = foo; } else { foo = bar; }
Cependant, contrairement à l'opérateur ternaire, l'opérateur ?: n'évalue l'opérande de gauche qu'une seule fois, ce qui améliore l'efficacité.
Exemple d'utilisation
Un exemple d'utilisation commun Le cas d'utilisation concerne l'auto-vérification, comme le montre l'extrait de code :
$items = $items ?: $this->_handle->result('next', $this->_result, $this);
Ici, il attribue le résultat de $this->_handle->result() à $items si $items est nul ou faux, tout en laissant $items inchangé sinon.
Exemples supplémentaires
Voici un quelques exemples supplémentaires pour éclairer le comportement :
var_dump(5 ?: 0); // 5 var_dump(false ?: 0); // 0 var_dump(null ?: 'foo'); // 'foo' var_dump(true ?: 123); // true var_dump('rock' ?: 'roll'); // 'rock' var_dump('' ?: 'roll'); // 'roll' var_dump('0' ?: 'roll'); // 'roll' var_dump('42' ?: 'roll'); // '42'
Si vous rencontrez un opérateur ?: à l'avenir, rappelez-vous que son objectif est de fournir un moyen concis d'évaluer et d'attribuer en fonction de la véracité, rendant votre code plus efficace et plus lisible.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3