如何阅读“protected”变量

时间:2013-10-25 12:29:01

标签: php

我从管理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对象但不能获取值。

3 个答案:

答案 0 :(得分:1)

除了同一个对象外,您不能使用来自其他空间的任何受保护数据。

但您可以编辑SaveResult对象并为id:

添加getter
public function getId() {
   return $this->id;
}

答案 1 :(得分:0)

你可以在SaveResult类中调用一个方法来访问数据,例如:

$response[0]->getId();

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

答案 2 :(得分:0)

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

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

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

单例类的静态属性:

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

非常简单和有用,虽然仅在少数情况下提供建议,因为受保护/私有财产不应在其范围之外使用。

您可以在此处找到 HandyMan 课程:http://phptoolcase.com/guides/ptc-hm-guide.html