Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Exercício __set

Criar alterar um atributo de um objeto usando a classe __set

1 resposta
solução!

Classe Endereco.php

<?php

namespace Alura\Banco\Modelo;


/**
 *  Class Endereco
 * @package Alura\Banco\Modelo
 * Adiciona um campo de leitura nesse caso para a IDE ajudar na chamada
 * @property-read string $cidade
 *   @property-read string $bairro
 *   @property-read string $rua
 *   @property-read string $numero
 *
 */
class Endereco
{
    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 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)
    {

        $metodo = 'recupera' . ucfirst($nomeAtributo);
        return $this->$metodo();
    }

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

}

Arquivo de teste endereco.php

<?php

use Alura\Banco\Modelo\Endereco;

require_once 'autoload.php';

$umEndereco = new Endereco(
    'Petropolis',
    'Bairro Qualquer',
    'Minha Rua',
    '71B'
);

$outroEndereco = new Endereco(
    'Rio',
    'Centro',
    'Uma rua ai',
    '50'
);

echo $umEndereco->cidade . PHP_EOL;

echo $umEndereco . PHP_EOL;
echo $outroEndereco . PHP_EOL;

$umEndereco->bairro = 'Jardim Record';

echo $umEndereco;