Mexendo no código desta aula eu resolvi testar usar o método mágico __get deixando somente ele pra 'recuperar' os valores e cortando do código varias linhas de 'recuperaAlgumaCoisa' e ficou assim:
Classe Endereco.php:
<?php
namespace Alura\B\Modelo;
/**
* Class Endereco
* @package Alura\B\Modelo
* @property-read string $cidade
* @property-read string $bairro
* @property-read string $numero
* @property-read string $rua
*/
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 __toString(): string
{
return "{$this->rua}, {$this->numero}, {$this->bairro}, {$this->cidade}";
}
public function __get(string $nomeAtributo)
{
return $this->$nomeAtributo ;
}
}
E no arquivo de testes endereco.php eu apenas chamei assim:
<?php
use Alura\B\Modelo\Endereco;
require_once 'autoload.php';
$umEndereco = new Endereco('Petrópolis', 'bairro Qualquer', 'Minha rua', '71B');
$outroEndereco = new Endereco('Rio', 'Centro', 'Uma rua aí', '50');
echo $umEndereco->rua.PHP_EOL;
echo $umEndereco->numero.PHP_EOL;
echo $umEndereco->bairro.PHP_EOL;
echo $umEndereco->cidade.PHP_EOL;
echo $umEndereco;
E funcionou, rodou. Mas quero saber se isso é algo que é recomendado ou não recomendado pelas boas práticas, se pode ou se a comunidade acharia ruim fazer apenas assim o uso do __get mágico e pronto, sem criar outros métodos gets (recuperaAlgumaCoisa) a fora...Qual sua opinião, professor?