Um único ponto de acesso dentro de uma classe
Bom dia, beleza?
Olha, tenho observado programadores fazendo algo não recomendado em classes.
O problema consiste em acessar/setar propriedades dentro de uma classe diretamente, quando um método do tipo set/get existe.
O problema é que deve existir apenas um ponto, ao acessar uma propriedade diretamente dentro de uma classe quando existe um método set, é uma violação da aplicação deste conceito e pode trazer problemas grandes para manutenção.
Isto se aplica a objetos que conhecem suas propriedades.
"Em outros casos, isto pode ser evitado usando uma interface."
class Imasters
{
private /* bool */ $dynamicProp = true;
public function example()
{
// ✖ Acessando incorretamente Imasters::dynamicProp
if (!is_bool($this->dynamicProp)) {
throw new UnexpectedValueException('[...]');
}
// ✖ Setando incorretamente Imasters::dynamicProp
$this->dynamicProp = false;
// ✔ Acessando corretamente Imasters::getProp()
if (!is_bool($this->getProp())) {
throw new UnexpectedValueException('[...]');
}
// ✔ Setando corretamente Imasters::getProp()
$this->resetProp(false);
}
/**
* Método do tipo de set
*/
public function resetProp(/* bool */ $new_value)
{
$this->dynamicProp = $new_value;
}
/**
* Método do tipo de get
*/
public function getProp()
{
return $this->dynamicProp;
}
}Discussão (5)
Carregando comentários...