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.