Ver Mensaje Individual
  #4 (permalink)  
Antiguo 30/08/2009, 07:13
Avatar de enriqueplace
enriqueplace
 
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 19 años, 5 meses
Puntos: 32
Respuesta: El objeto del objeto!?

Que tal Morpheus747

Esto también lo puedes hacer con "interfaces fluidas" (fluent interface) y es mucho más sencillo (Zend Framework lo usa constantemente).

Simplemente dentro del mismo objeto tienes métodos de filtro que puedes invocar anidadamente:

$objeto->setFiltro1($datos)->setFiltro2($datos)->setFiltro3($datos3);

ó

$resultado = $objeto->setFiltro1($datos)->setFiltro2($datos)->setFiltro3($datos3);

Y simplemente se hace con un return $this en cada método, lo que permite que puedas anidar las invocaciones, ya que siempre retornas la instancia del mismo objeto, por lo tanto la invocación siguiente se aplica sobre el mismo objeto.

Por ejemplo, esta práctica es muy común verla en Java (JSE), también en PHP en Zend Frameworks con set's de distintos atributos y para no tener que llamarlo separadamente se puede hacer anidado, también es común verlo en los frameworks javascripts (jQuery, etc), que van anidando distintos modificadores en la misma línea.

Código PHP:
class Cliente
{
   private 
$_nombre;
   private 
$_apellido;
   private 
$_nacimiento;

   public function 
setNombre($nombre)
   {
       
$this->_nombre $nombre;
       return 
$this;
   }
   public function 
setApellido($apellido)
   {
       
$this->_apellido $apellido;
       return 
$this;
   }
   public function 
setNacimiento($fecha)
   {
       
$this->_nacimiento $fecha;
       return 
$this;
   }
}

$cliente = new Cliente();

$cliente->setNombre('Enrique')->setApellido('Place')->setNacimiento('5/8/1973');

// También puedes hacerlo de esta manera y es lo mismo

$cliente->setNombre('Enrique')
   ->
setApellido('Place')
   ->
setNacimiento('5/8/1973'); 
Importante: ojo, hay que tener cuidado con esta práctica y no abusar, ya quemás de 3 invocaciones anidadas puede dificultar la lectura de lo que se está intentando hacer.

PD: para todos, traten de usar el estándar de codificación PHP de Zend, su uso nos beneficia a todos.
__________________
Blog phpsenior.com Cursos a Distancia surforce.com

Última edición por enriqueplace; 30/08/2009 a las 10:33