PHP致命错误:在null上调用成员函数getAttribute()(PHP 4.4到PHP 5.6)

时间:2017-12-27 00:59:17

标签: php xml nodes

我从客户端收到了这个旧脚本,该客户端仍在使用PHP 4.4的旧服务器上运行。我们将它放在一个使用PHP 5.6的新服务器上,它不再工作如何工作。

该脚本将表单保存到XML文件,并再次将XML中的信息检索到表单中。问题是它不再检索它。我们收到此错误:

  

PHP致命错误:在null

上调用成员函数getAttribute()

以下是代码出错的部分。

        if(!$xml_page->parseXML($strXMLToCContents)){
            $show_errors .= "Parsing failed.<br>";
        }

        $nodeRoot =& $xml_page->documentElement;

        $nodeToCDef =& $nodeRoot->firstChild;

        $strToCButtonLabel = $nodeToCDef->getAttribute("name");

        $countToCRows = $nodeToCDef->childCount;

        for($n = 0; $n < $countToCRows; $n++){
            $thisLinkNode =& $nodeToCDef->childNodes[$n];
            $arrLinks[] = array($thisLinkNode->getAttribute("name"), $thisLinkNode->getAttribute("page"));
        }
    }
}

if(count($arrLinks) == 0){
    for($n = 0; $n < $numFormFieldsToShow; $n++){
        $arrLinks[] = array('', '');
    }
}

任何需要改变的想法才能让它再次发挥作用。谢谢!

1 个答案:

答案 0 :(得分:1)

自PHP 5起,new会自动返回引用,因此使用=&amp;在此上下文中不推荐使用,并在PHP 5.3及更高版本中生成E_DEPRECATED消息,在早期版本中生成E_STRICT消息。从PHP 7.0开始,它在语法上无效。 (从技术上讲,不同之处在于,在PHP 5中,对象变量很像资源,仅仅是指向实际对象数据的指针,因此这些对象引用不是&#34;引用&#34;在之前使用的相同意义上(别名)..

http://php.net/manual/en/language.references.whatdo.php