Неопределенная ошибка члена PHP SimpleXML - PullRequest
0 голосов
/ 12 октября 2011

Я не могу понять, почему это ошибка. Все имеет смысл для меня. $logFile - это SimpleXMLElement, поэтому они должны иметь возможность использовать метод getName ().

Ошибка:

Фатальная ошибка: вызов функции-члена getName () для необъекта в C: \ xampp \ htdocs \ objLogParser.php в строке 29

Я отметил ошибку в своем коде.

<?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 "_ ";
    }



}
?>

Ответы [ 2 ]

1 голос
/ 12 октября 2011

$ this-> logFile никогда не устанавливается. $ logFile устанавливается в __construct (), но фактически никогда не используется. $ this-> logFile и $ logFile - это не одна и та же переменная. $ logFile ограничен областью действия __construct (); Вы не можете получить доступ к нему вне этого метода. Доступ к $ this-> logFile может быть получен любым методом в классе. Попробуйте изменить $ logFile в __construct () на $ this-> logFile.

1 голос
/ 12 октября 2011

Должно быть $this->logFile->getName();.По сути, замените $logFile на logFile.

...