Avatar ·

Que fait l'opérateur ?: (Elvis) en PHP et comment fonctionne-t-il ?

Bonjour à tous ! J'ai commencé à étudier PHP récemment et je suis tombé sur un opérateur étrange `?:`. Dans un projet, j'ai vu ce code :\n\n```php\n$name = $_GET['name'] ?: 'invité';\n```\n\nJe comprends l'opérateur ternaire classique `? :`, mais ici il n'y a qu'un seul point d'interrogation et deux-points. Il n'y a pas de condition avant `?`. Comment ça marche ? Qu'est-ce que "l'opérateur Elvis" ?\n\nJ'ai essayé de jouer avec localement :\n\n```php\n$value = 0;\n$result = $value ?: 'valeur par défaut';\necho $result; // affiche 'valeur par défaut'\n```\n\nPourquoi pour `0` cela a-t-il fonctionné comme false ? Et que se passe-t-il si la variable n'est pas définie ? Cela générera-t-il une erreur ?\n\nExpliquez-moi, s'il vous plaît, pour un débutant : dans quels cas est-il préférable d'utiliser `?:` plutôt que l'opérateur ternaire classique ou `??` (null coalescing) ? Quand faut-il l'utiliser, et quand vaut-il mieux ne pas le faire ?