Передача по ссылке и вызов parent::

whirlwind

TDD infected, paranoid
Передача по ссылке и вызов parent::

Уработался что-ли. Не пойму в чем загвоздка.

Это метод базового класса
PHP:
	function getCurrentPeriods($advert,&$begpos,&$begneg,&$endpos,&$endneg){
		$tool = $this->getTool("AdvertRoutines");
		$tool->getCurrentPeriods($advert,$begpos,$begneg,$endpos,$endneg);
		return true;
	}
В наследнике переопределяю - не работает. Ощущение такое, что getCurrentPeriods получает не ссылки, а копии
PHP:
	function getCurrentPeriods($advert,&$begpos,&$begneg,&$endpos,&$endneg){
		if ( $this->requisite("use_date")->getValue() ){
			$tk = new Controller_Toolkit;
			$beg = $tk->getDate($this,"beg_");
			$end = $tk->getDate($this,"end_",true);
			$begpos = $beg;
			$begneg = $beg;
			$endpos = $end;
			$endneg = $end;
			return true;
		}
		//$tool = $this->getTool("AdvertRoutines");
		//$tool->getCurrentPeriods($advert,$begpos,$begneg,$endpos,$endneg);
		//return true;
		return parent::getCurrentPeriods($advert,$begpos,$begend,$endpos,$endneg);
	}
вызов идет так
PHP:
    function nextElement(){

                  // skipped 

		$tool = $this->getTool("AdvertRoutines");
		$time = new Atom_Timestamp();
		$time->addDays(1);
		$begpos = $begneg = $endpos = $endneg = $time->getValue();
		$this->getCurrentPeriods($advert,$begpos,$begneg,$endpos,$endneg);

                  // skipped
    }
Прототип метода инструмента такой
PHP:
function getCurrentPeriods($advert,&$begpos,&$begneg,&$endpos,
        &$endneg,$holdmoneyperiod=null)
т.е. фактически совпадает по аргументам, однако если оставить в переопределенном parent::getCurrentPeriods, то значение $endneg остается прежним. Если раскомментировать в getCurrentPeriods в наследнике те строки, где напрямую обращение к инструменту - работает. Ткните носом где я туплю?
 

zerkms

TDD infected
Команда форума
PHP:
class a { function foo(&$arg) { $arg++; } }
class b extends a
{
    function foo(&$arg)
    {
        $arg++;
        parent::foo($arg);
    }
}

$b = new b();
$x = 1;
$b->foo($x);
echo $x; // 3
actual == expected

php 4.3.10 && 5.2
 

whirlwind

TDD infected, paranoid
zerkms не, не это...

Блин, ффсе, пора по пиву и спать

return parent::getCurrentPeriods($advert,$begpos,$begend,$endpos,$endneg);


пипец :)))))
 
Сверху