Endereco.php
<?php
namespace Alura\Banco\Modelo;
require_once 'autoload.php';
/**
* @property-read string $logradouro
* @property-read string $numero
* @property-read string $complemento
* @property-read string $bairro
* @property-read string $cidade
* @property-read string $estado
*/
class Endereco
{
protected string $logradouro;
protected string $numero;
protected string $complemento = '';
protected string $bairro;
protected string $cidade;
protected string $estado;
function __construct(string $logradouro, string $numero, string $bairro,
string $cidade, string $estado, ? string $complemento = '')
{
$this->logradouro = $logradouro;
$this->numero = $numero;
$this->complemento = $complemento;
$this->bairro = $bairro;
$this->cidade = $cidade;
$this->validaEstado($estado);
$this->estado = $estado;
}
public function recuperaLogradouro(): string
{
return $this->logradouro;
}
public function recuperaNumero(): string
{
return $this->numero;
}
public function recuperaComplemento(): string
{
return $this->complemento;
}
public function recuperaBairro(): string
{
return $this->bairro;
}
public function recuperaCidade(): string
{
return $this->cidade;
}
public function recuperaEstado(): string
{
return $this->estado;
}
private function validaEstado(string $estado): void
{
if (mb_strlen($estado) < 2 or mb_strlen($estado) > 2){
echo "Estado inválido... Ex.: RS" . PHP_EOL;
exit();
}
}
function __toString()
{
if ($this->complemento === ''){
return "Endereço: " . PHP_EOL .
"\t|Rua: {$this->logradouro}" . PHP_EOL .
"\t|Número: {$this->numero}" . PHP_EOL .
"\t|Cidade: {$this->cidade}" . PHP_EOL .
"\t|Bairro: {$this->bairro}" . PHP_EOL .
"\t|Estado: {$this->estado}" . PHP_EOL;
}
return "Endereço: " . PHP_EOL .
"\t|Rua: {$this->logradouro}" . PHP_EOL .
"\t|Número: {$this->numero}" . PHP_EOL .
"\t|Complemento: {$this->complemento}" . PHP_EOL .
"\t|Cidade: {$this->cidade}" . PHP_EOL .
"\t|Bairro: {$this->bairro}" . PHP_EOL .
"\t|Estado: {$this->estado}" . PHP_EOL;
}
public function __get(string $nomeAtributo)
{
$metodo = 'recupera' . ucfirst($nomeAtributo);
return $this->$metodo();
}
public function __set($name, $value)
{
$this->$name = $value;
}
}
teste.php
<?php
require_once 'autoload.php';
use Alura\Banco\Modelo\Endereco;
$endereco = new Endereco(logradouro: 'Rondonia', numero: '20', complemento: '', bairro: 'Centro', cidade: 'Igrejinha', estado: 'RS');
echo $endereco->cidade; // a reposta é 'Igrejinha'
$endereco->cidade = 'Taquara'; // aqui é feita a modificação do atributo cidade
echo $endereco->cidade; // a resposta aqui é 'Taquara'
Meu código Endereco.php está diferente, pois conforme fui assistindo às aulas, fui fazendo minhas próprias implementações.