Levei um tempo pra entende, mas com a ajuda fórum, acho que conseguir implementar.. estava tentando usando o str_replace().. não conseguir pelo replace..
<?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 string $cidade;
private string $bairro;
private string $rua;
private 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;
}
public function recuperaCidade(): string
{
return $this->cidade;
}
public function recuperaBairro(): string
{
return $this->bairro;
}
public function recuperaRua(): string
{
return $this->rua;
}
public function recuperaNumero(): string
{
return $this->numero;
}
public function __toString(): string
{
return "{$this->rua}, {$this->numero}, {$this->bairro}, {$this->cidade}";
}
public function __get(string $nomeAtributo)
{
// rua->recuperaRua
$metodo = 'recupera' . ucfirst($nomeAtributo);
return $this->$metodo();
}
public function __set(string $nomeAtributo, $value)
{
$this->$nomeAtributo = $value;
}
}
?>
<?php
require_once 'autoload.php';
use Alura\Banco\Modelo\Endereco;
$umEndereco = new Endereco('Petropolis', 'bairro Qualquer', 'Minha Rua', '71B');
$outroEndereco = new Endereco('Brasília', 'Asa Sul', '409', '103');
// var_dump($outroEndereco);
echo PHP_EOL;
$qualquerEndereco = new Endereco('Taquatinga', 'Sul', 'QI', '39');
$qualquerEndereco->cidade = 'Brasilia';
$qualquerEndereco->bairro = 'Asa Norte';
$qualquerEndereco->rua = 'SQS 407';
$qualquerEndereco->numero = '103';
echo $qualquerEndereco . PHP_EOL;
exit();
echo $umEndereco->cidade;
echo $umEndereco . PHP_EOL . $outroEndereco;
?>