我有個問題與實現Iterator接口 下面是代碼:類實現迭代循環
class User_Model_Users implements Iterator, Countable
{
protected $_count;
protected $_gateway;
protected $_resultSet;
public function __construct($results, $gateway)
{
$this->setGateway($gateway);
$this->_resultSet = $results;
}
public function setGateway(User_Model_UserGateway $gateway)
{
$this->_gateway = $gateway;
return $this;
}
public function getGateway()
{
return $this->_gateway;
}
public function count()
{
if (null === $this->_count) {
$this->_count = count($this->_resultSet);
}
return $this->_count;
}
public function current()
{
if ($this->_resultSet instanceof Iterator) {
$key = $this->_resultSet->key();
} else {
$key = key($this->_resultSet);
}
$result = $this->_resultSet [$key];
if (!$result instanceof User_Model_User) {
$gateway = $this->getGateway();
$result = $gateway->createUser($result);
$this->_resultSet [$key] = $result;
}
return $result;
}
public function key()
{
return key($this->_resultSet);
}
public function next()
{
return next($this->_resultSet);
}
public function rewind()
{
return reset($this->_resultSet);
}
public function valid()
{
return (bool) $this->current();
}
}
其$結果我提供Zend_Db_Table_Rowset但它可以是也其他物體或陣列。 我該如何解決這個問題,以便我在foreach循環中工作? 我沒有收到任何錯誤,因爲它是一個無限循環。
「還可以是其它的對象或數組」 - 在此情況下的示例腳本+數據和預期的結果將是很好。 – VolkerK
現在它不適用於Zend_Db_Table_Rowset。我想解決這個案例 – greg606
你的具體問題是什麼?你認爲需要解決什麼?你得到哪個錯誤? 「它不起作用」並沒有說什麼不行。 – hakre