Beavis
Banned
если я тебя правильно понял, сделать implements от класса итератораАвтор оригинала: HraKK
Кстати никто не знает как заставить класс реагировать на next()?
если я тебя правильно понял, сделать implements от класса итератораАвтор оригинала: HraKK
Кстати никто не знает как заставить класс реагировать на next()?
implements, если что, делается для интерфейса, а не классасделать implements от класса итератора
Какой странный вопрос. Очевидно, реализовать в нём метод next().Кстати никто не знает как заставить класс реагировать на next()?
ты оправдываешь свою подписьАвтор оригинала: Krishna
implements, если что, делается для интерфейса, а не класса
т.е. если в классе реализовать метод next(), то при вызове next($object) этот метод будет вызываться?)Автор оригинала: Krishna
Какой странный вопрос. Очевидно, реализовать в нём метод next().
Нет, все набежались обсуждать нюансы слова и что как работает, не проверив, работает ли это вообще.Потести. И код в студию, плз. У меня не получилось.
class A implements Iterator
{
public function next()
{
return 2;
}
public function current()
{
}
public function key()
{
}
public function valid()
{
}
public function rewind()
{
}
}
$a = new A();
var_dump( next($a) );
foreach( MockObject as $key => $value )
{
}
class View_Collection implements Iterator, Countable
{
protected $_arElements = array();
public function add(View_Data $objView)
{
$this->_arElements[] = $objView;
}
public function rewind()
{
reset($this->_arElements);
}
public function current()
{
$mixElement = current($this->_arElements);
return $mixElement;
}
public function key()
{
$this->
$mixKey = key($this->_arElements);
return $mixKey;
}
public function next()
{
$mixValue = next($this->_arElements);
return $mixValue;
}
public function valid()
{
$blValue = ($this->current() !== false);
return $blValue;
}
public function count()
{
return count($this->_arElements);
}
}
$Mock = new MockIterator;
......
тут надо его настроить
......
foreach( $Mock as $a => $b)
{
.....profit!
}
$Mock ->setReturnValueAt( 0, 'next', array( 'key1' => 1 ) );
$Mock ->setReturnValueAt( 1, 'next', array( 'key2' => 2 ) );
$Mock ->setReturnValueAt( 2, 'next', array( 'key3' => 3 ) );
$rs = $this->getMock('ResultSet');
$rs->expects($this->at(0))
->method('next')
->will($this->returnValue(true));
$rs->expects($this->at(1))
->method('get')
->with($this->equalTo('id'))
->will($this->returnValue(123));
$rs->expects($this->at(2))
->method('getRow')
->will($this->returnValue(Array('id' => 123,'name' => 'foo')));
$rs->expects($this->at(3))
->method('next')
->will($this->returnValue(true));
$rs->expects($this->at(4))
->method('get')
->with($this->equalTo('id'))
->will($this->returnValue(345));
$rs->expects($this->at(5))
->method('getRow')
->will($this->returnValue(Array('id' => 345,'name'=>'bar')));
$rs->expects($this->at(6))
->method('next')
->will($this->returnValue(false));
А вот это здравая мысль. Зачем я его тестирую, если это проблемы класса контейнера, сработает оно или нет. Интерфейс то есть.и обойдись единичным тестом с массивом
$test->run( new HtmlReporter() );