1
resposta

Erro Notice

Ola !

O código rodou direitinho. No entanto, acima dos dados do cadastro é exibido: "( ! ) Notice: Undefined offset: 1 in /opt/lampp/htdocs/alura/strings/Usuario.php on line 21"

Como resolver isso?!Insira aqui a descrição dessa imagem para ajudar na acessibilidade

https://drive.google.com/drive/folders/1SKwmPMKm1mK1dDgUKgCTJXI9OpxTSvFA?usp=sharing

1 resposta

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!