我有一个非常奇怪的问题,当我从构造函数中调用类的方法时,我得到空数组,但是当我从类实例调用方法时它工作正常。
这是 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] => 数组 ( ) )
如果我像这样从类实例进行调用并注释掉从 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),从构造函数中调用该方法似乎是合法的。