Для проекта php я использую класс Collection для обработки своих объектов и отложенной загрузки в Java-подобные коллекции.
Теперь у моего объекта есть коллекция адресов электронной почты, например. Поэтому я вызываю функцию getEmailAddresses () объекта, который вызывает маппер для возврата коллекции адресов электронной почты.
Это работает нормально, но когда я делаю цикл foreach над своей коллекцией, он возвращает действительные данные со следующей ошибкой в конце:
Fatal error: Call to a member function create() on a non-object in /foo/bar/Collection.php on line 89
Направляет на следующую функцию:
public function current()
{
if ($this->_collection instanceof Iterator)
$key = $this->_collection->key();
else
$key = key($this->_collection);
if ($key === null)
return false;
$item = $this->_collection[$key];
if (!is_object($item)) {
$item = $this->_gateway->create($item);
$this->_collection[$key] = $item;
}
return $item;
}
Эта строка:
$item = $this->_gateway->create($item);
_gateway - это адаптер, используемый коллекцией. Которым я не пользуюсь и держу его нулевым. Может быть, это как-то связано с этим?
У кого-нибудь есть подсказка? Поскольку все работает так, как должно, я могу прочитать данные коллекции. Это просто ошибка.