Zf2 “迭代器类不存在” 在 SessionContainer 定义上


Zf2 "The iterator class does not exist" on SessionContainer definition

有时在我的网站(ZendFramework2)上,我在设置会话变量时收到错误。错误:

PHP Fatal error:  Uncaught exception 'Zend''Stdlib''Exception''InvalidArgumentException' with message 'The iterator class does not exist' in /MySite/vendor/zendframework/zendframework/library/Zend/Stdlib/ArrayObject/PhpReferenceCompatibility.php:374
Stack trace:
#0 /MySite/vendor/zendframework/zendframework/library/Zend/Stdlib/ArrayObject/PhpReferenceCompatibility.php(414): Zend''Stdlib''ArrayObject''PhpReferenceCompatibility->setIteratorClass(NULL)
#1 [internal function]: Zend''Stdlib''ArrayObject''PhpReferenceCompatibility->unserialize('a:4:{s:7:"stora...')
#2 /MySite/vendor/zendframework/zendframework/library/Zend/Session/SessionManager.php(95): session_start()
#3 /MySite/vendor/zendframework/zendframework/library/Zend/Session/AbstractContainer.php(78): Zend''Session''SessionManager->start()
#4 /MySite/module/Application/Module.php(97): Zend''Session''AbstractContainer->__construct('site')
#5 [internal function]: Application''Module->onBootstrap(Object(Zend''Mvc''MvcEvent))
#6 /MySite/vendor/zendframework/zendframework/library/Zend/Stdlib/ArrayObject/PhpReferenceCompatibility.php on line 374

代码模块.php第 97 行:

$s_site = new 'Zend'Session'Container('site');

我尝试,但找不到原因。你有什么想法吗?需要更多信息?谢谢。

这是 ArrayObject/PhpReferenceCompatibility 中的 setIteratorClass 方法传递空$class参数的结果。 我不确定为什么它有时会得到一个空值,但我在我的情况下修复它的方法是在传递空对象时将迭代器类设置为"ArrayIterator",如下所示:

if (!isset($class)) {
    $class = 'ArrayIterator';
}

在最新的 zf2 版本中,ArrayObject/PhpReferenceCompatibility 类已被删除,因此请在 stdlib/ArrayObject.php 中进行更改。

相关文章:
  • 没有找到相关文章