Dica de PHP · publicada em
Encadear chamadas em WordPress é arriscado porque muita função devolve null ou false quando não encontra: get_post(), wc_get_order(), get_user_by(). Chamar método em null é fatal.
O operador ?-> interrompe a cadeia devolvendo null se o lado esquerdo for null, em vez de explodir. O código fica linear em vez de aninhado.
Um cuidado: ele não protege contra false, e várias funções do WordPress devolvem false, não null. Nesses casos, normalize antes com ?: null ou trate explicitamente.
// varias funcoes do WP devolvem false, entao normalize primeiro
$pedido = wc_get_order($id) ?: null;
$cidade = $pedido?->get_address()['city'] ?? '';
$autor = get_post($post_id)?->post_author;
Na prática: ?-> só cobre null. Função do WP que devolve false: normaliza com ?: null antes.