Avatar ·

O que o operador ?: (Elvis) faz em PHP e como ele funciona?

Olá a todos! Comecei a estudar PHP recentemente e me deparei com um operador estranho `?:`. Em um projeto, vi este código:\n\n```php\n$name = $_GET['name'] ?: 'guest';\n```\n\nEu entendo o operador ternário normal `? :`, mas aqui tem apenas um ponto de interrogação e dois pontos. Não há nenhuma condição antes do `?`. Como isso funciona? O que é o "operador Elvis"?\n\nTentei brincar com ele localmente:\n\n```php\n$value = 0;\n$result = $value ?: 'default value';\necho $result; // imprime 'default value'\n```\n\nPor que para `0` funcionou como false? E o que acontece se a variável não estiver definida? Isso vai gerar um erro?\n\nExplique, por favor, para um iniciante: em quais casos é melhor usar `?:` em vez do operador ternário normal ou `??` (null coalescing)? Quando devo usá-lo, e quando é melhor evitar?