1
resposta

Exercício __set

enderecos.php

<?php

use Alura\Banco\Modelo\Endereco;

require_once 'autoload.php';

$umEndereco = new Endereco('Petrópolis', 'bairro qualquer', 'Minha rua', '71B');
$outroEndereco = new Endereco('Rio', 'Centro', 'Uma rua ai', '50');

echo $outroEndereco->cidade;
exit();

echo $umEndereco. PHP_EOL;
echo $outroEndereco;

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;
    }

    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();
        return $this->$nomeAtributo;
    }

    public function __set(string $nomeAtributo, string $valor)
    {
        $this->$nomeAtributo = $valor;
    }
}

A resolução do meu Exercício foi que não precisei usar a variável $metodo, pois o método 'set' já faz isso pra mim, trabalhando junto com get, como os atributos são privados eles utilizam nossos getters assim fazendo o overloading. :D

1 resposta

Oi, Edison, como vai?

Isso mesmo! Ótima solução.

Parabéns pelo empenho nos estudos!

Caso tenha quaisquer comentários ou dúvidas a respeito de alguma aula ou desafio, pode postar aqui no fórum que vamos te responder!

Abraços e bons estudos!