Где то видел код где создается обхект интерфейса Iterator и разбирает результат mysqli
Нашел только пока что разбор массива
<?php
class eliterator implements Iterator
{
private $var = array();
public function __construct($array)
{
if (is_array($array)) {
$this->var = $array;
}
}
public function rewind()
{
echo "mysql query\n";
reset($this->var);
}
public function current()
{
$var = current($this->var);
return $var;
}
public function key()
{
return $var;
}
public function next()
{
$var = next($this->var);
echo "следующий: $var\n";
return $var;
}
public function valid()
{
$key = key($this->var);
$var = ($key !== NULL && $key !== FALSE);
return $var;
}
}
Спасибо всем. Кому интересно, получилось нечто подобное. Код намерено сокращен сокращен.
<?php
class eliterator implements Iterator {
private $position = 0;
private $resource = null;
public function __construct($sql) {
$this->position = 0;
$this->resource = mysql_query($sql);
}
function rewind() {
$this->position = 0;
}
function current() {
mysql_data_seek($this->resource,$this->position );
$value = mysql_fetch_assoc($this->resource);
return new user($value);
}
function key() {
return $this->position;
}
function next() {
++$this->position;
}
function valid() {
return mysql_fetch_assoc($this->resource);
}
}
class user{
function __construct($array = ''){
/* преобразование массива в объект */
foreach($array as $key => $value){
$this->$key = $value;
}
}
}
$link = mysql_connect('...', '...', '...');
if (!$link) {
die('Не удалось соединиться : ' . mysql_error());
}
// выбираем foo в качестве текущей базы данных
$db_selected = mysql_select_db('...', $link);
if (!$db_selected) {
die ('Не удалось выбрать базу foo: ' . mysql_error());
}
foreach(new eliterator("SELECT * FROM user") as $iUser){
var_dump($iUser);
}
/* Возвращаемый результат */
object(user)#3 (10) {
["id"]=>
string(1) "..."
["fio"]=>
string(0) "..."
["login"]=>
string(17) "..."
["pass"]=>
string(0) "..."
["e_mail"]=>
string(0) "..."
["active"]=>
string(1) "..."
["type"]=>
string(1) "..."
}
object(user)#4 (10) {
["id"]=>
string(1) "..."
["fio"]=>
string(0) "..."
["login"]=>
string(15) "..."
["pass"]=>
string(0) "..."
["e_mail"]=>
string(0) "..."
["active"]=>
string(1) "..."
["type"]=>
string(1) "..."
}