onPHP/onphp-framework

Problem in CommonDaoWorker::uncacheByIds

Opened this issue · 0 comments

public function uncacheByIds($ids)
{
if (empty($ids))
return;
$uncacher = $this->getUncacherById(array_shift($ids));
foreach ($ids as $id)
$uncacher->merge($this->getUncacherById($id));
return $this->registerUncacher($uncacher->uncache());
}

Определяем $uncacher, мержим его в цикле и передаем $uncacher->uncache() в $this->registerUncacher() вместо $uncacher.

Ошибки из-за этого я пока не получал, но во первых $uncacher->uncache() ничего не возвращает:

public function uncache()
{
foreach ($this->classNameMap as $className => $idKeys) {
foreach ($idKeys as $key) {
$this->uncacheClassName($className, $idKeys);
}
}
}

и в $this->registerUncacher() пойдет NULL вместо ожидаемого интерфейса UncacherBase. Плюс далее по цепочке в
public function registerUncacher(UncacherBase $uncacher)
{
$uncacher->uncache();
вызывается $uncacher->uncache()

По итогу строчку

return $this->registerUncacher($uncacher->uncache());
надо заменить на $this->registerUncacher($uncacher); Возврат тоже убрать, потому как смысла в нем нет.