Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.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_Magic Methods - Fatal编程技术网

Php 导致错误的神奇函数

Php 导致错误的神奇函数,php,magic-methods,Php,Magic Methods,我已经实现了神奇的函数u_get和_set: 以下代码可以正常工作: $connect->Hammer = "DoubleClawed"; echo $connect->Hammer; 但是,当我运行一些单元测试时,行: $this->Id = (int) $configXML->ConfigurationFindResults->Configuration->Id; 给我: 正在尝试获取非对象的属性 在这之前还有其他神奇的设置变量。我还使用非魔术的方法测

我已经实现了神奇的函数u_get和_set:

以下代码可以正常工作:

$connect->Hammer = "DoubleClawed";
echo $connect->Hammer;
但是,当我运行一些单元测试时,行:

$this->Id = (int) $configXML->ConfigurationFindResults->Configuration->Id;
给我:

正在尝试获取非对象的属性

在这之前还有其他神奇的设置变量。我还使用非魔术的方法测试了这段代码,它是有效的。为什么这条线会引起它$configXML是一个SimpleXML对象

我觉得您的魔法获取和设置很好。我在我的应用程序中使用相同的代码


您的错误来自$configXML->ConfigurationFindResults->Configuration->Id

是否确定此链中的每个元素都是对象,例如:$configXML、$configXML->ConfigurationFindResults、$configXML->ConfigurationFindResults->Configuration等。?查看错误前面的一些代码也会很有帮助。您确定整数强制转换没有立即运行吗?这将使它成为一个非对象。难道你的魔法功能至少有点多余吗?PHP已经以这种方式运行,但在未设置属性的情况下返回null,例如:@NullUserException您是否建议他在关闭错误报告的情况下运行代码=/?尝试访问未定义的属性是不合法的,除非您已经定义了它是您想要的实际行为。@Z转换将在所有其他操作之后进行。如果我可以问的话,为什么您在应用程序中使用相同的代码?如果没有它,它的工作原理是一样的:@JdvBerg如果你知道你会侵犯私有访问权,那么为什么要首先将其设置为私有?这不是修辞,我真的很想知道这是什么用例,但是你不会使用相同的代码,对吗?我并不是说使用_set和_get没有用处,只是我看不出在这个特殊情况下有什么区别。对于只读,可以使用get only,对于延迟加载,必须在getter函数中转换get
$this->Id = (int) $configXML->ConfigurationFindResults->Configuration->Id;