3
respostas

erro na execução

public function __get(String $nomeAtributo){
        $metodo = 'recupera'.ucfirst($nomeAtributo);
        return $this->$metodo;
    }
$end1 = new Endereco('sp','itaim','rua Agenor', '107');

echo $end1.PHP_EOL;

echo $end1->rua;

resulta em erro

rua Agenor, 107, itaim, sp PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 45056 bytes) in D:\cursos Alura\PHP\PHP OO\PHP OO aula2\src\Modelo\Endereco.php on line 48

3 respostas

Olá, tudo bem?

Bom, o erro acusa um limite de memória excedida, então é importante uma coisa.

NÃO FAÇA ISSO

<?php
// NÃO FAZER
ini_set('memory_limit', '-1');

É possível que você receba essa instrução para tirar o limite de memória do PHP, o que não seria a forma correta de resolver o problema.

Ideal seria que você postasse todo o código para tentarmos te ajudar a encontrar o problema. ;-)

Olá, Nelso.

Em return $this->$metodo; você está tentando acessar uma propriedade com o nome que esteja na variável $metodo, mas essa propriedade não existe, porque sua intenção na verdade é chamar um método.

Faltou o () no final.

Isso resolve:

 return $this->$metodo();

Olá! O problema foi solucionado?

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