- var_dump: documentation ( source)
- print_r: documentation ( source)
<?php
interface IDBResult {
function FetchAssoc();
function Rewind();
}
class DBResult implements IDBResult {
private $_records = array(
array('abc' => 'def'),
);
private $_i = 0;
function FetchAssoc() {
return $this->_records[$this->_i++];
}
function Rewind() {
$this->_i = 0;
}
}
class ResultIterator implements Iterator {
private $_rs;
private $_rec;
private $_index = 0;
private $_onLoad;
function __construct(IDBResult $rs, callable $callback = null) {
$this->_rs = $rs;
$this->_onLoad = $callback ?: function($rec, $i) { return $rec; };
}
public function current() {
var_dump(__FUNCTION__);
return call_user_func_array($this->_onLoad, array($this->_rec, $this->_index));
}
public function key() {
var_dump(__FUNCTION__);
return $this->_index;
}
public function next() {
var_dump(__FUNCTION__);
$this->_index++;
$this->_rec = $this->_rs->FetchAssoc();
}
public function rewind() {
var_dump(__FUNCTION__);
$this->_index = 0;
$this->_rs->Rewind();
}
public function valid() {
var_dump(__FUNCTION__);
return !is_null($this->_rec);
}
}
$rs = new DBResult();
$it = new ResultIterator($rs);
foreach($it as $rec) {
print_r($rec);
}