2
respostas

Possível solução do fatal error: uncaught typeError. "return must be of type string,null returned"

Vi que tem dois tópicos aqui no fórum com esse erro que não tiveram resposta, mas estão fechados.

Se o seu constructor está seguindo essa estrutura:

class User
{
  private $name;
  private $surname;

  public function __construct (string $str)
  {
    $fullName = explode(" ", $str, 2);

    $this->name = $fullName[0];
    $this->surname = $fullName[1];
  }

  public function getName (): string
  {
    return $this->name;
  }

  public function getSurname(): string
  {
    return $this->surname;
  }
}

E mesmo assim está aparecendo a mensagem dizendo que getName retornou NULL, verifique se a função construct foi escrito com dois _ (underscore) antes do nome, essa forma: __construct (). É muito comum esquecer de digitar dois _ e quando fazemos isso, a função construtora não é iniciada, por isso as variáveis retornam NULL, por que depois de serem declaradas, não foram iniciadas com nenhum valor.

2 respostas

Opa Daniel, você tentou passar a variável $full_name no construtor ? porque o seu $this->name se referencia a ela, e não a $str do construtor.

Olá, Izaque. Não. A $fullname só existe dentro do __construct. Ela é o array temporário onde ficam os "pedaços" da $str. Mas eu não tive este erro. Como vi que os outros post aqui foram fechados sem resposta, fiz este tentando ajudar. Vlw!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software