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

Solução __Set()

Endereco.php

<?php

namespace Alura\Banco\Modelo;

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 recuperaCidade(): string
    {
        return $this->cidade;
    }

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

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

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

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

    public function __get($nomeAtributo)
    {
        $metodo = 'recupera' . ucfirst($nomeAtributo);
        return $this->$metodo() . PHP_EOL;
    }

    private function alteraCidade($cidade):void
    {
        $this->cidade = $cidade;
    }private function alteraRua($rua):void
    {
        $this->rua = $rua;
    }private function alteraBairro($bairro):void
    {
        $this->bairro = $bairro;
    }private function alteraNumero($numero):void
    {
        $this->numero = $numero;
    }

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

enderecos.php

<?php

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

require_once 'autoload.php';

$umEndereco = new Endereco('Petropolis', 'bairro qualquer', 'Minha rua', 50);
$outroEndereco = new Endereco('Rio de Janeiro', 'Centro', 'Uma rua aí', 60);

echo $outroEndereco . PHP_EOL;

$umEndereco->bairro = 'Nova Veneza';

echo $umEndereco . PHP_EOL;
1 resposta
solução!

Oi Bruno, tudo bem?

Parabéns por concluir essa atividade e obrigada por compartilhar seus códigos conosco. É ótimo ver seu interesse em aprender e praticar conceitos de programação em PHP, especificamente com relação a classes e propriedades.

Seu código PHP é bem organizado e segue as convenções da linguagem. A criação da classe Endereco e a definição de suas propriedades, métodos construtores e mágicos, como __toString, __get, e __set, mostram sua compreensão de orientação a objetos em PHP.

Além disso, a instância da classe Endereco e a manipulação das propriedades demonstram sua capacidade de trabalhar com objetos e propriedades de forma eficaz. O uso das propriedades "read-only" é uma prática sólida para controlar o acesso aos dados da classe.

Continue aprimorando suas habilidades em PHP e explorando novos conceitos.

Um abraço e bons estudos.

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