Ver Mensaje Individual
  #18 (permalink)  
Antiguo 03/01/2009, 08:02
Avatar de enriqueplace
enriqueplace
 
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 19 años
Puntos: 32
Respuesta: Duda: Como inicializar propiedades públicas (filtradas) de un objeto

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.
__________________
Blog phpsenior.com Cursos a Distancia surforce.com