PHP从构造函数中调用类方法而不填充数组

时间:2012-12-05 21:08:31

标签: php

我有一个非常奇怪的问题,当我从构造函数中调用类的方法时,我得到的结果是空数组,但是当我从类实例调用该方法时,它工作正常。

以下是loadxml.php的代码:

include('XMLNode.php'); // this is a simple object class

class LoadXML
{
public $MyNodes = array();

public function __constructor($xmlFile)
{
    $this->getNodes($xmlFile);
}

public function getNodes($xmlFile)
{
    if (file_exists($xmlFile)) {
        $xmlNodes = simplexml_load_file($xmlFile);

        foreach ($xmlNodes->XMLNode as $key => $value) {
            array_push($this->MyNodes, $value);
        }
    }
    else
    {
        exit('Failed to open xml file '.$xmlFile);
    }
}
}

现在在主文件中,如果我这样打电话:

include('loadxml.php');

$nodes = new LoadXML('myXMLFile.xml');

print "<pre>";
print_r($nodes);
print "</pre>";

......结果如下:

LoadXML对象 (     [MyNodes] =&gt;排列         (         ) )

如果我从类实例中调用这样的调用,并注释掉来自LoadXML构造函数的getNodes调用:

include('loadxml.php');

$nodes = new LoadXML();
$nodes->getNodes('myXMLFile.xml');

print "<pre>";
print_r($nodes);
print "</pre>";

我会得到正确的输出。发生了什么?我在第一种方法中做错了什么?我错过了类构造函数中的内容吗?我查看了手册(http://php.net/manual/en/oop4.newref.php),对方法的调用似乎在构造函数中是合法的。

1 个答案:

答案 0 :(得分:7)

尝试将构造函数重命名为__construct