Opa,
Minha solução foi um pouco mais "no braço" hehehe e queria saber a opinião do professor :)
Enderecos.php
<?php
use Alura\Banco\Modelo\Endereco;
require_once 'autoload.php';
$umEndereco = new Endereco(
'Floripa',
'Coqueiros',
'rua do saber ',
89
);
$outroEndereco = new Endereco(
'Sao Paulo',
'Lapa',
'avenida europa',
1500
);
$umEndereco->__set('$numero', 10);
echo $outroEndereco-> numero . PHP_EOL;
echo $umEndereco->numero;
exit();
echo $outroEndereco;
e agora o 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 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;
}
/**
* Metodos "recupera" feitos em aula suprimidos no código
* Somente deixado os metodos GET e SET
*/
public function __get(string $nomeAtributo)
{
$metodo = 'recupera'. ucfirst($nomeAtributo);
return $this-> $metodo();
}
public function __set($nomeAtributo, $valor)
{
if ($nomeAtributo === '$bairro') $this->bairro = $valor;
if ($nomeAtributo === '$cidade') $this->cidade = $valor;
if ($nomeAtributo === '$rua') $this->rua = $valor;
if ($nomeAtributo === '$numero') $this->numero = $valor;
}
}