Minha resolução ficou assim:
Funcionalidade endereco.php:
<?php
require_once 'autoload.php';
use Licao\Banco\Modelo\Endereco;
$umEndereco = new Endereco(
'São João',
'bairro qualquer',
'Rua dos prazeres',
'70a'
);
echo $umEndereco->rua . PHP_EOL;
$umEndereco->rua = "Rua dos perdizes";
echo $umEndereco->rua . PHP_EOL;
exit();
Classe Endereco.php
<?php
namespace Licao\Banco\Modelo;
/**
* Class Endereco
* @package Alura\Banco\Modelo
* @property-read string $cidade
* @property-read string $bairro
* @property-read string $rua
* @property-read string $numero
*/
class Endereco
{
//...
public function __set(string $nomeAtributo, string $novoValor) : void
{
$metodo = 'altera' . ucfirst($nomeAtributo);
$this->$metodo($novoValor);
}
O código do exercício imprimiu a seguinte saída:
$ php endereco.php
Rua dos prazeres
Rua dos perdizes