PHP5.6到PHP5.4降级:迭代器不再工作
我有一个网站,它在XAMPP和PHP5.6中运行良好PHP5.6到PHP5.4降级:迭代器不再工作,php,Php,我有一个网站,它在XAMPP和PHP5.6中运行良好 foreach ($treeNodeIterator as $nodeKey => $node) { $currentLevel = $nodeKey->getNodeLevel(); if ($currentLevel > $depth) { $depth = $currentLevel; } } 然后我发现我的服务器运行的是PHP5.4。所以现在我明白了 服务器日志文件上显示以下错误消息:
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的安全更新在几天前就结束了。使用起来不再安全了。