Ver Mensaje Individual
  #3 (permalink)  
Antiguo 29/08/2009, 13:52
Avatar de Webstudio
Webstudio
Colaborador
 
Fecha de Ingreso: noviembre-2001
Ubicación: 127.0.0.1
Mensajes: 3.499
Antigüedad: 23 años
Puntos: 69
Respuesta: El objeto del objeto!?

Exacto, se llama "Method Chaining" o Encadenamiento (podríamos traducirlo así). Por lo que veo, tu necesidad reside en tener un administrador de filtros, más los filtros necesarios. Lo que no termino de entender de tu necesidad, es si el método "tercero", "segundo", etc... aplican el filtro SOLO en el texto que le pasás como parámetro.... pero que hace con ese texto? Lo agrega al final del texto anterior?

Si así fuera, lo que te puede servir es lo siguiente. Primero creemos un par de filtros, siguiendo tu ejemplo.

Código PHP:
Ver original
  1. <?php
  2. class Filtro_Primero {
  3.    
  4.     // Esta clase convierte el primer caracter en mayusculas
  5.     public function filtrar($texto) {
  6.         return ucfirst($texto);
  7.     }
  8. }
  9.  
  10. class Filtro_Segundo {
  11.    
  12.     // Esta convierte todo el texto en mayusculas.
  13.     public function filtrar($texto) {
  14.         return strtoupper($texto);
  15.     }
  16. }
  17.  
  18. class Filtro_Tercero {
  19.    
  20.     protected $_lista = array('spam', 'bot', 'spyware');
  21.    
  22.     // Esta clase toma un texto y remueve ciertas palabras
  23.     public function filtrar($texto) {
  24.         return str_replace($this->_lista, '', $texto);
  25.     }
  26. }

Y luego creemos un administrador de filtros, que te permitirá manejar todo desde una clase central. Voy a hacerlo BIEN simple, para evitar otro tipo de complejidad innecesaria, pero sepan entender que no es una implemnetación "correcta":

Código PHP:
Ver original
  1. <?php
  2. class Administrador_Filtros {
  3.    
  4.     protected $filtros = array();
  5.    
  6.     protected $texto = '';
  7.    
  8.     public function __construct() {
  9.         $this->filtros = array(
  10.             'primero' => new Filtro_Primero,
  11.             'segundo' => new Filtro_Segundo,
  12.             'tercero' => new Filtro_Tercero
  13.         );
  14.     }
  15.    
  16.     public function primero($texto) {
  17.         $this->texto.= $this->filtros['primero']->filtrar($texto);
  18.         return $this;
  19.     }
  20.    
  21.     public function segundo($texto) {
  22.         $this->texto.= $this->filtros['segundo']->filtrar($texto);
  23.         return $this;
  24.     }
  25.    
  26.     public function tercero($texto) {
  27.         $this->texto.= $this->filtros['tercero']->filtrar($texto);
  28.         return $this;
  29.     }
  30.    
  31.     public function __toString() {
  32.         return $this->texto;
  33.     }
  34. }
Finalmente, lo podemos utilizar muy fácilmente, este es un ejemplo :
Código PHP:
Ver original
  1. <?php
  2. $texto = new Administrador_Filtros();
  3. $texto->primero('espero tengamos ')->segundo('suerte ')->tercero('bot bot con spam esto.');
  4. echo $texto;
  5.  
  6. // esto muestra por pantalla : "Espero tengamos SUERTE con esto."

Espero sinceramente que esto sea lo que estabas buscando :D
Suerte !
__________________
Tutoriales Photoshop | Web-Studio.com.ar
Artículos PHP | ZonaPHP.com