0

我从一个管理 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 对象但不能得到里面的值。

4

3 回答 3

1

您不能使用除同一对象之外的其他空间中的任何受保护数据。

但是您可以编辑 SaveResult 对象并为 id 添加 getter:

public function getId() {
   return $this->id;
}
于 2013-10-25T12:31:32.257 回答
0

应该有一个你可以在SaveResult类中调用的方法,它可以让你访问数据,比如:

$response[0]->getId();

请参阅该类的文档/源代码。

于 2013-10-25T12:31:56.400 回答
0

您可以使用 ReflectionProperty 接口读取受保护的属性。

phptoolcase 库中的HandyMan组件有一个方便的方法来读取不可访问的对象属性。

$value = PtcHandyMan::getProperty( $your_object , 'propertyName');

单例类的静态属性:

$value = PtcHandyMan::getProperty( 'myCLassName' , 'propertyName');

非常简单且有用,尽管仅在少数情况下建议使用,因为不应在其范围之外使用受保护/私有属性。

您可以在这里找到HandyMan类:http: //phptoolcase.com/guides/ptc-hm-guide.html

于 2014-11-08T17:17:48.687 回答