0
respostas

Exercício __set

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;


?>