O meu ficou assim!
Endereco.php
<?php
namespace Alura\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
{
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 recuperaCidade()
{
return $this-> cidade;
}
public function recuperaBairro()
{
return $this-> bairro;
}
public function recuperaRua()
{
return $this-> rua;
}
public function recuperaNumero()
{
return $this-> numero;
}
public function __tostring(): string
{
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): void
{
$this->nomeAtributo = $valor;
}
public function __get($nomeAtributo)
{
return $this->$nomeAtributo;
}
}
endereco.php
<?php
use Alura\Banco\Modelo\Endereco;
require_once 'autoload.php';
$umEndereco = new Endereco('Rio de Janeiro','Praça','Rua de um lugar','20');
$outroEndereco = new Endereco('São João','Rocha','Rua cristal','100');
echo 'Cidade: ' . $umEndereco->cidade.PHP_EOL;
echo 'Rua: ' . $umEndereco->rua;
exit();