Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Desafio: __set

Classe Endereco

<?php

namespace Alura\Banco\Modelo;

/**
 * Class Endereco
 * @package Alura\Banco\Modelo
 * @property-read @property-write $cidade
 * @property-read @property-write $bairro
 * @property-read @property-write $rua
 * @property-read @property-write $numero
 **/
class Endereco
{
    private string $cidade;
    private string $bairro;
    private string $rua;
    private string $numero;

    /**
     * Endereco constructor.
     * @param string $cidade
     * @param string $bairro
     * @param string $rua
     * @param 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 __get($nomeDoAtributo)
    {
        return $this->$nomeDoAtributo;
    }

    public function __set($nomeDoAtributo, $valorDoAtributo)
    {
        $this->$nomeDoAtributo = $valorDoAtributo;
    }

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

testeEndereco.php

<?php

require_once 'src/autoload.php';

use Alura\Banco\Modelo\Endereco;

// Criação da instância do objeto tipo Endereco
$endereco =  new Endereco('Cidade','bairro','rua','numero');

echo "Teste dos métodos mágicos __set,__get e __toString:" . PHP_EOL;
echo "Mostra o endereço antes das alterações (usando o médodo mágico __toString): {$endereco} " . PHP_EOL;
// Mudança dos atributos usando o método mágico __set
$endereco->cidade = 'Brasilia';
$endereco->bairro = 'Asa Norte';
$endereco->rua = '202/203';
$endereco->numero = '01';
echo "Mostra o endereço depois das alterações (usando o médodo mágico __toString) : {$endereco} " . PHP_EOL;
echo "Teste do método mágico __get :\$endereco->bairro = {$endereco->bairro}" . PHP_EOL;

Não criei getters e setters para destacar o uso dos métodos mágicos.

5 respostas

Boa, Cristiano. Mas era para enviar aqui, a solução:

https://cursos.alura.com.br/course/php-oo-heranca-polimorfirmo-interfaces/task/75653

:-)

Não consegui responder usando o tópico acima...

Por que? Aparece algum erro

Não aparece a opção de responder. Aparece somente o texto:

O que você acha disso? Este tópico foi criado há mais de quatro semanas. Sua dúvida terá mais destaque se você abrir um novo tópico clicando aqui

A caixa de resposta (onde insiro o código) e o botão responder não aparecem.

De qualquer forma, agradeço a presteza em responder.

solução!

Eita. Não sabia que tinha essa limitação. Eu consigo responder por lá. Bom, de qualquer forma, o código está correto! :-D

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