>我从管理 WSDL 数据的类中获取结果集。
我没有把代码写到类上,我只使用它。
我调用一个函数来使用服务创建 ID,并希望稍后在同一脚本中使用该 ID。
我的结果集如下所示:
Array
(
[0] => SaveResult Object
(
[id:protected] => newgeneratedID
[success:protected] => 1
)
)
所以我尝试$response[0]->id来获取我需要的ID。现在我得到一个致命的错误。
PHP Fatal error: Cannot access protected property SaveResult::$id
我知道这是一个菜鸟问题,但我不明白为什么我可以print_r对象但不能获取其中的值。
不能使用除同一对象之外的其他空间中的任何受保护数据。
但是您可以编辑 SaveResult 对象并为 id 添加 getter:
public function getId() {
return $this->id;
}
应该有一个
可以在 SaveResult
类中调用的方法,它允许您访问数据,如下所示:
$response[0]->getId();
请参阅该类的文档/源代码。
您可以使用 ReflectionProperty 接口读取受保护的属性。
phptoolcase 库中的 HandyMan 组件有一个方便的方法来读取无法访问的对象属性。
$value = PtcHandyMan::getProperty( $your_object , 'propertyName');
来自单一实例类的静态属性:
$value = PtcHandyMan::getProperty( 'myCLassName' , 'propertyName');
非常简单和有用,尽管仅在少数情况下建议使用,因为不应在其范围之外使用受保护/私有财产。
你可以在这里找到勤杂工类:http://phptoolcase.com/guides/ptc-hm-guide.html