Ver Mensaje Individual
  #17 (permalink)  
Antiguo 05/02/2012, 23:45
Avatar de GatorV
GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Consulta objetos PHP

Ah ya te entendí... no creo que exista una forma de hacerlo, ya que no hay control sobre cual fue el "último" método, tampoco puedes saber si vas a llamar a otro método, a lo mucho que puedes hacer me imagino es usar el método invoke para ejecutar la consulta, ejemplo:

Código PHP:
Ver original
  1. <?php
  2. class Query
  3. {
  4.     private $_limit;
  5.     private $_offset;
  6.     private $_query;
  7.    
  8.     public function __construct()
  9.     {
  10.         $this->_query = 'SELECT * FROM foo';
  11.     }
  12.    
  13.     public function limit($results)
  14.     {
  15.         $this->_query .= " LIMIT $results";
  16.        
  17.         return $this;
  18.     }
  19.    
  20.     public function offset($results)
  21.     {
  22.         $this->_query .= " OFFSET $results";
  23.        
  24.         return $this;
  25.     }
  26.    
  27.     public function __toString()
  28.     {
  29.         return $this->_query;
  30.     }
  31.    
  32.     public function __invoke()
  33.     {
  34.         $query = (string) $this->__toString();
  35.         echo "Executing $query";
  36.         return array();
  37.     }
  38. }
  39.  
  40. $query = new Query();
  41.  
  42. $query1 = clone $query;
  43. $query2 = clone $query;
  44. $query3 = clone $query;
  45. $query1->limit(10);
  46. $datos = $query1();
  47. var_dump($datos);
  48. $query2->offset(10);
  49. $datos = $query2();
  50. var_dump($datos);
  51. $query3->limit(10)->offset(10);
  52. $datos = $query3();
  53. var_dump($datos);