1
resposta

Exerício __set

Criei o __set em forma de Trait

enderecos.php

<?php

use Alura\Banco\Modelo\Endereco;

require_once 'autoload.php';

$endereco01 = new Endereco('Shire', 'Calm', 'Baggins', '22');
echo $endereco01 . PHP_EOL;

$endereco01->bairro = 'Calm Neighborhood';
echo $endereco01 . PHP_EOL;

InserePropriedades.php

<?php

namespace Alura\Banco\Modelo;

trait InserePropriedades
{
    public function __set($nomeAtributo, string $valor): void
    {
        $metodo = 'insere' . ucfirst($nomeAtributo);
        $this->$metodo($valor);
    }
}

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
 */

final class Endereco
{
    use AcessoPropriedades;
    use InserePropriedades;

    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 recuperaRua(): string
    {
        return $this->rua;
    }
    public function recuperaCidade(): string
    {
        return $this->cidade;
    }

    public function recuperaBairro(): string
    {
        return $this->bairro;
    }

    public function recuperaNumero(): string
    {
        return $this->numero;
    }

    public function __toString(): string
    {
        return "{$this->rua}, {$this->numero}, {$this->bairro}, {$this->cidade}";
    }

    public function insereRua(string $nomeRua)
    {
        $this->rua = $nomeRua;
    }
    public function insereCidade($nomeCidade)
    {
        $this->cidade = $nomeCidade;
    }

    public function insereBairro($nomeBairro)
    {
        $this->bairro = $nomeBairro;
    }

    public function insereNumero($numeroEndereco)
    {
        $this->numero = $numeroEndereco;
    }
}
1 resposta

Oi Rafael, tudo bem?

Fico feliz em ver que realizou a atividade, e está se dedicando, continue assim!

Caso surjam dúvidas, fico à disposição.

Abraços e bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software