1
resposta

Encadeamento de Métodos - PHP

Entendi sua dica, e mesmo sabendo que não é uma boa prática, gosto de explorar os limites da sintaxe da linguagem como forma de consolidar o aprendizado.

Neste sentido, reparei num detalhe que não consigo entender bem. Na aula sobre herança, a classe 'Titular' tem um método 'recuperaCpf()' assim:

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

Esse método retorna um objeto do tipo CPF, que por sua vez chama um método 'recuperaNumero' e retorna uma string.

Essa afirmação está correta?

Em segundo lugar, para recuperar um CPF específico, tive que recorrer ao código abaixo no arquivo banco.php.

$annaPaula->recuperaCpfTitular()->recuperaCpf();

Onde $annaPaula aponta para um objeto do tipo 'Titular'. Minha dúvia é: porque no primeiro código a chamada para o método dispensou o uso dos parênteses, e no segundo caso eu tive que usar?

1 resposta

Júlio, vamos por partes:

Esse método retorna um objeto do tipo CPF, que por sua vez chama um método 'recuperaNumero' e retorna uma string.

Não. O método recuperaCpf retorna uma string. A gente acessa o atributo cpf, e dele chama o método recuperaNumero() que devolve uma string.

porque no primeiro código a chamada para o método dispensou o uso dos parênteses, e no segundo caso eu tive que usar?

Quando se usa parênteses, é um método. Caso contrário, é um atributo.

No primeiro exemplo, $this->cpf não é um método, é um atributo. Desse atributo você chama um método recuperaNumero() .

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