【问题标题】:PHP SimpleXML Undefined Member ErrorPHP SimpleXML 未定义成员错误
【发布时间】:2011-10-12 09:45:18
【问题描述】:

我不明白为什么这是一个错误。一切对我来说都有意义。 $logFileSimpleXMLElement 并且他们应该能够使用 getName() 方法。

错误:

致命错误:在第 29 行对 C:\xampp\htdocs\objLogParser.php 中的非对象调用成员函数 getName()

我已经在我的代码中标记了错误。

<?php
class objLogParser
{
    private $fileName;
    private $logFile;

    //Constructor
    public function __construct($varFileName)
    {
        $this->fileName = $varFileName;
        //Load as string
        $xmlstr = file_get_contents($varFileName);
        $logFile = new SimpleXMLElement($xmlstr);

        //Load as file
        $logFile = new SimpleXMLElement($varFileName,null,true);
    }

    public function printNodes()
    {

        $this->printHelper($this->logFile,0);
    }


    public function printHelper($currentNode, $offset)
    {

        echo $this->offset($offset);
        echo $currentNode->getName();  ////////////////////LINE 29 ERROR
        if($currentNode->attributes()->count() > 0)
            echo "({$currentNode->attributes()})";
        echo " {$currentNode}"; 

        foreach ($currentNode->children() as $child) {
            echo "<br>";
            printHelper($child, ($offset+1));
        }
    }

    function offset($offset)
    {
        for ($i = 0; $i < $offset; $i++)
            echo "_ ";
    }



}
?>

【问题讨论】:

    标签: php xml simplexml


    【解决方案1】:

    应该是$this-&gt;logFile-&gt;getName();。本质上,将$logFile 替换为logFile

    【讨论】:

    • 感谢您的帖子。进行了更改,更新了错误,仍然存在。
    • 新的错误信息是说$currentNode 不是一个对象。从您提供的代码来看,我假设您打算在您的 __construct 函数中放入 $this-&gt;logFile 而不是 $logFile
    【解决方案2】:

    $this->logFile 永远不会被设置。 $logFile 在 __construct() 中设置,但从未实际使用过。 $this->logFile 和 $logFile 不是同一个变量。 $logFile 仅限于 __construct(); 的范围;您无法在该方法之外访问它。 $this->logFile 可以通过类中的任何方法访问。尝试将 __construct() 中的 $logFile 更改为 $this->logFile。

    【讨论】:

    • 是的,我也遇到了一些类似的问题,但前面没有 $this。非常感谢。
    猜你喜欢
    • 2016-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-29
    • 1970-01-01
    • 2012-02-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多