1
resposta

Exercício __set

Deixe aqui neste tópico sua implementação do método __set para que seja possível atribuir um valor diretamente às propriedades da classe Endereco

1 resposta

ficaria assim:

enderecos.php

<?php

use Alura\Banco\Modelos\Endereco;


require_once 'autoload.php';

$umEndereco = new Endereco('uma cidade', 'bairro', 'rua', 'numero');
$outroEndereco = new Endereco('outra cidade', 'outro bairro', 'outra rua', 'outro numero');


$umEndereco->cidade = "Nova Cidade";

echo $umEndereco;

Endereco.php

<?php

namespace Alura\Banco\Modelos;

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 __toString()
    {
        return "{$this->rua}, {$this->numero}, {$this->bairro}, {$this->cidade}";
    }

    public function alteraCidade($novaCidade): void{
        $this->cidade = $novaCidade;
    }

    public function __set($nomeAtributo, $value): void{
        $metodo = 'altera' . ucfirst($nomeAtributo);
        $this->$metodo($value);

    }
}

aqui funcionou assim.