1
resposta

Exercicio __set()

<?php

namespace Alura\Banco\Modelo;

/**
 * Class Endereco
 * @package Alura\Banco\Modelo
 * @property-read string $cidade
 * @property-read string $estado
 * @property-read string $rua
 * @property-read string $numero
 * @property-read  string $complemento
 */

class Endereco
{
    private string $cidade;
    private string $estado;
    private string $rua;
    private string $numero;
    private string $complemento;


    public function __construct(string $cidade, string $estado, string $rua, string $numero, string $complemento)
    {
        $this->cidade = $cidade;
        $this->estado = $estado;
        $this->rua = $rua;
        $this->numero = $numero;
        $this->complemento = $complemento;
    }

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

    public function __get($nomeAtributo)
    {
        //rua -> getRua();
        $metodo = ucfirst($nomeAtributo);
        $metodo = 'get'. $metodo;
        return $this->$metodo();

    }

    public function __set($nomeAtributo, $valorAtributo)
    {
        $atributo = 'set'. ucfirst($nomeAtributo);
        $this->$atributo($valorAtributo);
    }
<?php

require_once 'autoload.php';

use Alura\Banco\Modelo\Endereco;



$end1 = new Endereco('Rio de janeiro',
    'RJ',
    'Rua Paulo Baeta Neves',
    '2',
    'Lote2 quadra F'
);

$end2 = new Endereco('São Paulo',
    'SP',
    'Alguma rua lá',
    '65',
    'longe de tudo'
);

$end1->rua = 'Paulo freire';
echo $end1->rua;
1 resposta

Natalia, você tentou executar esse código?

Se você executar vai receber um erro. Vê aí e me diz se você consegue resolver o erro. :-)