Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP从构造函数调用类方法而不是填充数组_Php - Fatal编程技术网

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

PHP从构造函数调用类方法而不是填充数组,php,Php,我有一个非常奇怪的问题,当我从构造函数中调用一个类的方法时,我得到的结果是空数组,但当我从类实例调用该方法时,它工作正常 以下是loadxml.php的代码: include('XMLNode.php'); // this is a simple object class class LoadXML { public $MyNodes = array(); public function __constructor($xmlFile) { $this->getNodes($xm

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

以下是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>";
include('loadxml.php');
$nodes=newloadxml('myXMLFile.xml');
打印“”;
打印(节点);
打印“”;
。。。结果如下所示:

include('loadxml.php');

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

print "<pre>";
print_r($nodes);
print "</pre>";
LoadXML对象 ( [MyNodes]=>数组 ( ) )

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

include('loadxml.php');
$nodes=newloadxml();
$nodes->getNodes('myXMLFile.xml');
打印“”;
打印(节点);
打印“”;

我将获得正确的输出。发生了什么事?在第一种方法中,我做错了什么?我是否缺少类构造函数中的某些内容?我查看了手册(),对该方法的调用似乎在构造函数中是合法的。

尝试将构造函数重命名为
\uuu-construct
尝试将构造函数重命名为
\uu-construct

我实际上是想弄清楚,当您调用
new LoadXML()
时,脚本为什么不退出。您尚未传递参数,但仍在构造函数中调用
getNodes()
。在这种情况下,
file\u exists()
将计算为false,导致退出。这里显示的代码是否准确地反映了整个类结构和正在执行的测试?@MikeBrant他的构造函数从未被调用。他必须将其重命名为
\u construct
,才能在第二个示例中正确描述您的行为。@Benjamin Haha。我把时间花在了逻辑上,实际上我没有看方法的名称。哈哈!那些简单的事情会让我丧命……:)谢谢你,本杰明!我实际上是想弄明白,当您调用
newloadxml()
时,脚本为什么不退出。您尚未传递参数,但仍在构造函数中调用
getNodes()
。在这种情况下,
file\u exists()
将计算为false,导致退出。这里显示的代码是否准确地反映了整个类结构和正在执行的测试?@MikeBrant他的构造函数从未被调用。他必须将其重命名为
\u construct
,才能在第二个示例中正确描述您的行为。@Benjamin Haha。我把时间花在了逻辑上,实际上我没有看方法的名称。哈哈!那些简单的事情会让我丧命……:)谢谢你,本杰明!谢谢你,先生!妈的,我从没想到过。我本以为php会给我一个错误或什么的。。。非常感谢您的快速回复!:)谢谢你,先生!妈的,我从没想到过。我本以为php会给我一个错误或什么的。。。非常感谢您的快速回复!:)