PDA

Ver la Versión Completa : Iteradores y contables


roman
28-03-2009, 02:51:27
¿Verdad que son curiosas las interfaces en PHP 5?

Miren si no esta clase:


<?php
class DbRows implements Countable, Iterator
{
private $results;
private $index = -1;
private $row = false;

/**
* Constructor. Se inicializa con los resultados de una llamada a
* mysql_query.
*/
public function __construct($results)
{
$this->results = $results;
}

/**
* Devuelve el número de registros
*/
public function count()
{
return mysql_num_rows($this->results);
}

/**
* Reinicia la iteración
*/
public function rewind()
{
@mysql_data_seek($this->results, 0);
$this->index = -1;
$this->next();
}

/**
* Avanza de registro
*/
public function next()
{
$this->row = mysql_fetch_row($this->results);

if ($this->row)
{
$this->index++;
}
}

/**
* Devuelve el registro actual
*/
public function current()
{
return $this->row;
}

/**
* Devuelve el índice actual
*/
public function key()
{
return $this->index;
}

/**
* Devuelve si la posición actual es válida
*/
public function valid()
{
return $this->row != false;
}
}
?>


Y, ¿cuál es su uso?

Si creamos un objeto de esta clase con el resultado de una consulta:


$dbRows = new DbRows(mysql_query('select ....'));


podemos recorrer todos los registros con una sentencia tan limpia como:


echo 'Número de registros: ' . count($dbRows);

foreach ($dbRows as $row)
{
var_dump($row);
}


:)

// Saludos

Kipow
28-03-2009, 03:10:27
Simple y funcional. aunque ahora que he estado documentandome en PHP pues no se ven nada mal las PDO (http://php.net/pdo).