Endereco.php
<?php
namespace Alura\Banco\Modelo;
/**
* class Endereco
* @package Alura\Banco\Modelo
* @property string $cidade
* @property string $bairro
* @property string $rua
* @property string $numero
*/
class Endereco
{
private string $cidade;
private string $bairro;
private string $rua;
private string $numero;
/**
* Summary of __construct
* @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 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 defineCidade(string $cidade): void
{
$this->cidade = $cidade;
}
public function defineBairro(string $bairro): void
{
$this->bairro = $bairro;
}
public function defineRua(string $rua): void
{
$this->rua = $rua;
}
public function defineNumero(string $numero): void
{
$this->numero = $numero;
}
public function __toString(): string
{
return "{$this->rua}, {$this->numero}, {$this->bairro}, {$this->cidade}";
}
public function __get(string $nomeAtributo)
{
$metodo = 'recupera' . ucfirst($nomeAtributo);
return $this->$metodo();
}
public function __set(string $nomeAtributo, string $valor): void
{
$metodo = 'define' . ucfirst($nomeAtributo);
$this->$metodo($valor);
}
}
enderecos.php
<?php
use Alura\Banco\Modelo\Endereco;
require_once 'autoload.php';
$umEndereco = new Endereco('São Paulo', 'Vila Mariana', 'Avenida Paulista', '123');
$outroEndereco = new Endereco('São Paulo', 'Jardim Paulista', 'Rua Deploy de Sexta', '456');
$umEndereco->cidade = 'Extreme Go Horse';
$outroEndereco->bairro = 'Jardim Delete Sem Where';
echo $umEndereco . PHP_EOL;
echo $outroEndereco;
Saída
Avenida Paulista, 123, Vila Mariana, Extreme Go Horse
Rua Deploy de Sexta, 456, Jardim Delete Sem Where, São Paulo