Aqui eu fiz assim:
enderecos.php
<?php
use Alura\Banco\Modelo\Endereco;
require_once 'autoload.php';
$umEndereco = new Endereco('Barretoa', 'Jd. Arizona', 'R. Alacyr Bartolomeu Baroni', '66');
$outroEndereco = new ENdereco('Barretos', 'Centro', 'outraRua', '10');
echo $umEndereco . PHP_EOL . "<BR/><BR/>";
echo $umEndereco->numero = 10;
Endereco.php
<?php
namespace Alura\Banco\Modelo;
class Endereco
{
private $cidade;
private $bairro;
private $rua;
private $numero;
public function __construct(string $cidade, string $bairro, string $rua, string $numero)
{
$this->cidade = $cidade;
$this->bairro = $bairro;
$this->rua = $rua;
$this->numero = $numero;
}
public function __toString()
{
return "{$this->rua}, {$this->numero}, {$this->bairro}, {$this->cidade}";
}
public function __get(string $nomeAtributo)
{
$metodo = 'recupera' . ucfirst($nomeAtributo);
return $this->$metodo;
}
public function __set(string $nomeAtributo, $valor)
{
$metodo = 'define' . ucfirst($nomeAtributo);
$resultado = $this->$metodo($valor);
if ($resultado == true) :
return true;
endif;
return false;
}
public function defineCidade($valor): void
{
$this->cidade = $valor;
}
public function defineNumero($valor): void
{
$this->numero = $valor;
}