Fiz dessa forma
endereco.php
<?php
use Alura\Banco\Modelo\Endereco;
require_once 'autoload.php';
$umEndereco = new Endereco('Recife', 'Recife', 'Rua do bom jesus', '183');
$outroEndereco = new Endereco('Recife', 'Recife', 'Avenida Conde da Boa Vista', '192');
$umEndereco->cidade = 'Olinda';
echo $umEndereco;
Endereco.php
<?php
namespace Douglas\Banco\Modelo;
/**
* Class Endereco
* @package Alura\Banco\Modelo
* @property-write string $cidade
* @property-write string $bairro
* @property-write string $rua
* @property-write string $numero
*/
class Endereco
{
/**
* @var string
*/
private string $cidade;
/**
* @var string
*/
private string $bairro;
/**
* @var string
*/
private string $rua;
/**
* @var string
*/
private string $numero;
/**
* Endereco constructor.
* @param string $cidade
* @param string $bairro
* @param string $rua
* @param string $numero
*/
public function __construct(string $cidade, string $bairro, string $rua, string $numero)
{
$this->cidade = $cidade;
$this->bairro = $bairro;
$this->rua = $rua;
$this->numero = $numero;
}
/**
* Função para retorna endereço em string no formato rua, número, bairro - cidade
* @return string
*/
public function __toString(): string
{
return "{$this->rua}, {$this->numero}, {$this->bairro} - {$this->cidade}";
}
/**
* @param $nomeAtributo
* @param $valor
* @return void
*/
public function __set($nomeAtributo, $valor): void
{
$metodo = 'alterar' . ucfirst($nomeAtributo);
$this->$metodo($valor);
}
/**
* @param string $cidade
*/
public function alterarCidade(string $cidade): void
{
$this->cidade = $cidade;
}
/**
* @param string $bairro
*/
public function alterarBairro(string $bairro): void
{
$this->bairro = $bairro;
}
/**
* @param string $rua
*/
public function alterarRua(string $rua): void
{
$this->rua = $rua;
}
/**
* @param string $numero
*/
public function alterarNumero(string $numero): void
{
$this->numero = $numero;
}
/**
* @return string
*/
public function recuperarCidade(): string
{
return $this->cidade;
}
/**
* @return string
*/
public function recuperarBairro(): string
{
return $this->bairro;
}
/**
* @return string
*/
public function recuperarRua(): string
{
return $this->rua;
}
/**
* @return string
*/
public function recuperarNumero(): string
{
return $this->numero;
}
}