Ver Mensaje Individual
  #4 (permalink)  
Antiguo 01/04/2009, 09:23
Avatar de GatorV
GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 7 meses
Puntos: 2135
Respuesta: Devolver datos de una consulta

El problema se parte en 2, si devuelves un array con los resultados, significa que vas a hacer 2 bucles, uno en tu clase, y otro probablemente en donde lees los resultados y los imprimes en tu pagina web. Pero si regresas el resource, pierdes entonces lo que estabas haciendo en POO.

En lo personal te recomendaría tratar de migrar a una capa más POO friendly, como lo es PDO, así puedes tratar con el resource y de forma POO.

Si no te es posible migrar a PDO por ejemplo, entonces trata de encapsular el resultado, lo que yo hacia antes era tener una clase result que leia los datos, por ejemplo:
Código php:
Ver original
  1. public function query( $query ) {
  2.          $result = @mysql_query($query, $this->_link );
  3.          if(!$result) {
  4.                    throw new DBException( mysql_error(), mysql_errno() );
  5.          }
  6.  
  7.          if( is_resource( $result ) {
  8.                   return new DBResult( $result, $query );
  9.          } else {
  10.                   return $result;
  11.          }
  12. }

Luego la clase DBResult era mas o menos así:
Código php:
Ver original
  1. class DBResult {
  2.        private $_result;
  3.        private $_query;
  4.  
  5.        public function __construct( $result, $query ) {
  6.                 $this->_result = $result;
  7.                 $this->_query = $query;
  8.        }
  9.  
  10.        public function fetchRow() {
  11.                 return mysql_fetch_row( $this->_result );
  12.        }
  13. }

Así te evitas el doble loop y mantienes el encapsulamiento en tus clases, aunque realmente te recomendaría mudarte a PDO, o minimo a mysqli.

Saludos.