PHP5.6到PHP5.4降级:迭代器不再工作

PHP5.6到PHP5.4降级:迭代器不再工作,php,Php,我有一个网站,它在XAMPP和PHP5.6中运行良好 foreach ($treeNodeIterator as $nodeKey => $node) { $currentLevel = $nodeKey->getNodeLevel(); if ($currentLevel > $depth) { $depth = $currentLevel; } } 然后我发现我的服务器运行的是PHP5.4。所以现在我明白了 服务器日志文件上显示以下错误消息:

我有一个网站,它在XAMPP和PHP5.6中运行良好

foreach ($treeNodeIterator as $nodeKey => $node) {

  $currentLevel = $nodeKey->getNodeLevel();

  if ($currentLevel > $depth) {

    $depth = $currentLevel;

  }

}
然后我发现我的服务器运行的是PHP5.4。所以现在我明白了 服务器日志文件上显示以下错误消息:

[13-Sep-2015 12:33:19 America/Denver] PHP Fatal error:  Call to a member function getNodeLevel() on a non-object in treeNode.php line 82
以下是TreeNodeOperationy类:

class TreeNode {

  protected $name;

  protected $value;

  protected $children;

  protected $customData;

  //...

}

class TreeNodeIterator implements Iterator {

  private $traversalMode;

  private $rootNode;

  private $nodesToVisit;

  private $nodesToVisitLevels;

  private $currentNodeIteratorKey;

  const TRAVERSAL_MODE_BFS = 0;

  const TRAVERSAL_MODE_DFS = 1;

  const NUM_TRAVERSAL_MODES = 2;

  public function current() {

    return $this->nodesToVisit[0];

  }

  public function key() {

    return $this->currentNodeIteratorKey;

  }


}

class TreeNodeIteratorKey {

  private $nodeIndex;

  private $nodeLevel;

  private $customData;

  //...
}

什么样的迭代器?nodeKey不就是一个键,而节点就是一个对象吗?因为我在遍历TreeNodes,这个键是一个自定义对象,它嵌入了节点索引和节点级别作为键的一部分。你已经发布了两个treeNodeEnterWorkey类定义,这是故意的吗?总之,这是PHP5.5添加的:-所以,是的。没有工作。找到一种不同的方法。值得注意的是:PHP5.4的安全更新在几天前就结束了。使用起来不再安全了。