Te cambio el ejemplo:
Código PHP:
class Paciente
{
private $_temperatura;
const FIEBRE = 38;
const MAX_TEMPERATURA = 43;
const MIN_TEMPERATURA = 35;
public function asignarTemperatura($grados)
{
if ($grados < self::MIN_TEMPERATURA || $grados > self::MAX_TEMPERATURA){
throw new MyException('Temperatura fuera de rango');
}
$this->_temperatura = $grados;
}
public function tieneFiebre()
{
return $this->_temperatura >= self::FIEBRE
}
}
Como te argumentaba al principio:
- Te estás complicando innecesariamente, se puede hacer mucho más sencillo.
- Trata de evitar los __set y __get, por lo general terminan creando el efecto "atributos públicos"
- No uses/evita (conceptualmente) los getter/setter, usa métodos simples (si los set/get son parches, no tienes por qué estar obligado a usarlos).
- El principio se aplica de acuerdo a la exposición de los atributos, justamente, en el uso de get/set (y así lo estás haciendo). Por lo tanto, no los uses, usa métodos y coloca la lógica que quieras.
El problema es conceptual, get/set es conceptual, usar un método común es conceptual.
Con este código creo que se acabó la discusión.