Arquivo da classe (Endereco.php):
<?php
namespace Alura\Banco\Modelo;
class Endereco
{
private string $cidade;
private string $bairro;
private string $rua;
private 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 __get(string $nomeAtributo): string
{
$metodo = 'recupera' . ucfirst($nomeAtributo); // guarda na variável $metodo o nome das funções recuperaRua, recuperaBairro, recuperaCidade e recuperaNumero de acordo com o nome do atributo que colocamos como input (rua, bairro, cidade ou numero).
return $this->$metodo();// equivalente a escrever 'recuperaRua()', 'recuperaBairro()', 'recuperaCidade()' ou 'recuperaNumero()'.
}
public function __set(string $nomeAtributo, string $novoValorAtributo): void
{
$this->$nomeAtributo = $novoValorAtributo;
}
}
Arquivo de teste (endereco.php):
<?php
require_once 'autoload.php';
use Alura\Banco\Modelo\Endereco;
$umEndereco = new Endereco (
'Recife',
'Centro',
'Rua Do Sossego',
'55J'
);
echo $umEndereco->bairro . PHP_EOL;
$umEndereco->bairro = 'Imbiribeira';
echo $umEndereco->bairro . PHP_EOL;
Retorno no terminal:
Natália@DESKTOP-JCK623T MINGW64 ~/Documents/Alura/Formação PHP/1.3 Orientacao a Objetos com PHP/projeto
$ php endereco.php
Centro
Imbiribeira