Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

"ValidaNome" não reconhecido

Prezados,

O método validaNome consta como não declarado pelo construtor (Undefined function 'validaNome'.intelephense(1010)):

<?php 

class Pessoa
{
    public $nome;
    public $cpf;

    public function __construct(string $nome, CPF $cpf)
    {   
        $this->nome = validaNome($nome);
        $this->cpf = $cpf;
    }

    private function validaNome(string $nome) //privado para ser acessado internamente
    {
        if (strlen($nome) < 5) {
            echo "Nome precisa ter pelo menos 5 caracteres";
            exit();
        }else{
            return mb_strtoupper($nome);
        }
    }

    public function recuperaNome(): string
    {
        return $this->nome;
    }


    public function recuperaCPF(): string
    {
       return $this->cpf->recuperaNumero();
    }


}

Como resolver?

3 respostas
solução!

Olá, Eliane! Tudo bem? Ele não está reconhecendo pois para você CHAMAR um método da própria classe você precisa utilizar o "$this"; Da seguinte maneira:

public function __construct(string $nome, CPF $cpf)
    {
        $this->validaNomeTitular($nome); // Primeiro, você verifica se este nome é válido.
        $this->nome = $nome; // Segundo, você atribui o valor vindo por parâmetro.
    }

Tem razão, Vinícius, inclusive consegui escrever em uma única linha:

$this->nome = $this->validaNome($nome);

Obrigada!!!!!

Perfeito!!! Elaine!

De nada =)