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

[Sugestão] Exercício __set

Segue abaixo a solução do desafio lançado no curso de PHP Orientado a Objetos referente ao método mágico __set

Alguns nomes de métodos podem estar diferentes dos mostrados nas aulas

class Endereco

*Solução: *

1- Foi feita a remoção dos comentários 'property-read', pois agora além de ler podemos modificá-las uilizando o método __set.

2- Implementado o método mágico, onde se é recebido via parâmetro o nome da propriedade e o novo valor a ser atribuído a ela.

<?php

namespace Alura\Bank\Model;

/**
 * class Endereco
 * @package Alura\Bank\Model
 * @property string $cidade
 * @property string $bairro
 * @property string $rua
 * @property string $endereco
 */
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 getCidade(): string
    {
        return $this->cidade;
    }

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

    public function getRua(): string
    {
        return $this->rua;
    }

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

    public function setCidade(string $cidade): void
    {
        $this->cidade = $cidade;
    }

    public function setBairro(string $bairro): void
    {
        $this->bairro = $bairro;
    }

    public function setRua(string $rua): void
    {
        $this->rua = $rua;
    }

    public function setNumero(string $numero): void
    {
        $this->numero = $numero;
    }

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

    public function __get(string $name): string
    {
        $metodo = 'get' . ucfirst($name);
        return $this->$metodo();
    }

    public function __set($name, $value): void
    {
        $campo = 'set' . ucfirst($name);
        $this->$campo($value);
    }
}

Arquivo enderecos.php

*Solução: *

1- Para acessar o método mágico devemos acessar a propriedade do objeto utilizando o método mágico __get.

Assim:

    $end1->rua;

2- Logo após acessar, devemos atribuir o valor desejado.

Assim:

    $end1->rua = 'Rua Maneira';

3- Pronto, valor alterado no objeto Endereco, agora é só mostrarmos o novo valor na tela.

Desse jeito:

    echo $end1->rua . PHP_EOL;
<?php

use Alura\Bank\Model\Endereco;

require_once 'autoload.php';

$end1 = new Endereco('São Paulo', 'Vila F', 'Rua Legal', '337');
$end2 = new Endereco('Rio', 'Petropolis', 'Rua Boa', '733');

echo $end1->rua . PHP_EOL;

$end1->rua = 'Rua Maneira';

echo $end1->rua . PHP_EOL;
1 resposta
solução!

Olá, Cristiano. Tudo bem?

Muito boa a sua resolução e toda essa sua explicação de como resolveu o exercício, parabéns pelo seu desempenho no curso :D

Continue assim! Bons estudos! Abraços :D