Oi, Carlos, como vai?
Testei o código aqui e vi que isso está ocorrendo quando é enviado um nome sem sobrenome, quando o envio é feito desse modo a função explode
não consegue dividir a string em um array com tamanho maior do que um. O erro ocorre justamente por isso, perceba que na linha 21 existe a tentativa de acessar a posição 1 do array, só que essa posição não existe, um array com tamanho 1 possui apenas a posição 0.
Sugestão de código para resolver o erro:
Função setNomeSobrenome da classe Usuario.php
private function setNomeSobrenome(string $nome)
{
$nomeSobrenome = explode(" ", $nome, 2);
if ($nomeSobrenome[0] === "") {
$this->nome = "Nome inválido";
} else {
$this->nome = $nomeSobrenome[0];
}
if (count($nomeSobrenome) < 2) {
$this->sobrenome = "Sobrenome Inválido";
} else {
$this->sobrenome = $nomeSobrenome[1];
}
}
Neste código, utilizei a função count
para verificar o tamanho do array, se o tamanho for menor que dois, é que não foi enviado o sobrenome, então o sobrenome será inválido. Perceba que desta forma evito acessar uma posição inexistente do array, prevenindo possíveis erros.
Espero que essa explicação te ajude.
Caso tenha quaisquer comentários ou dúvidas a respeito de alguma aula ou desafio, pode postar aqui no fórum que vamos te responder!
Abraços e bons estudos!