Fiz assim
public function __get(string $nomeAtributo)
{
$metodo = 'recupera' . ucfirst($nomeAtributo);
return $this->$metodo();
}
public function __set(string $nomeAtributo, $novoNome): void
{
$metodo = $this->__get($nomeAtributo);
echo "Alterando $metodo para $novoNomeAtributo" . PHP_EOL;
$this->$nomeAtributo = $novoNomeAtributo;
}
no arquivo de execucao
$umEndereco = new Endereco('Goiania', 'Centro', 'Rua 10', '18B');
$umEndereco->bairro = 'Novo Bairro';
echo $umEndereco . PHP_EOL;
resultado da execucao:
php enderecos.php
Alterando Centro para Novo Bairro
Rua 10, 18B, Novo Bairro, Goiania