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

Exercício __set

Fiz dessa forma

endereco.php

<?php

use Alura\Banco\Modelo\Endereco;

require_once 'autoload.php';

$umEndereco = new Endereco('Recife', 'Recife', 'Rua do bom jesus', '183');
$outroEndereco = new Endereco('Recife', 'Recife', 'Avenida Conde da Boa Vista', '192');

$umEndereco->cidade = 'Olinda';
echo $umEndereco;

Endereco.php

<?php

namespace Douglas\Banco\Modelo;


/**
 * Class Endereco
 * @package Alura\Banco\Modelo
 * @property-write string $cidade
 * @property-write string $bairro
 * @property-write string $rua
 * @property-write string $numero
 */
class Endereco
{
    /**
     * @var string
     */
    private string $cidade;
    /**
     * @var string
     */
    private string $bairro;
    /**
     * @var string
     */
    private string $rua;
    /**
     * @var string
     */
    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;
    }

    /**
     * Função para retorna endereço em string no formato rua, número, bairro - cidade
     * @return string
     */
    public function __toString(): string
    {
        return "{$this->rua}, {$this->numero}, {$this->bairro} - {$this->cidade}";
    }

    /**
     * @param $nomeAtributo
     * @param $valor
     * @return void
     */
    public function __set($nomeAtributo, $valor): void
    {
        $metodo = 'alterar' . ucfirst($nomeAtributo);
        $this->$metodo($valor);
    }

    /**
     * @param string $cidade
     */
    public function alterarCidade(string $cidade): void
    {
        $this->cidade = $cidade;
    }

    /**
     * @param string $bairro
     */
    public function alterarBairro(string $bairro): void
    {
        $this->bairro = $bairro;
    }

    /**
     * @param string $rua
     */
    public function alterarRua(string $rua): void
    {
        $this->rua = $rua;
    }

    /**
     * @param string $numero
     */
    public function alterarNumero(string $numero): void
    {
        $this->numero = $numero;
    }

    /**
     * @return string
     */
    public function recuperarCidade(): string
    {
        return $this->cidade;
    }

    /**
     * @return string
     */
    public function recuperarBairro(): string
    {
        return $this->bairro;
    }

    /**
     * @return string
     */
    public function recuperarRua(): string
    {
        return $this->rua;
    }

    /**
     * @return string
     */
    public function recuperarNumero(): string
    {
        return $this->numero;
    }
}
1 resposta
solução!

Boa, Alexandro

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