我如何访问此对象值?

时间:2009-12-30 19:09:56

标签: php object

我正在尝试回显并访问[“_aVars:private”]

中存储的值

$ obj-> _vars和$ obj-> _vars:private不起作用:(

这是$ obj

的var_dump
object(test_object)#15 (30) {
  ["sDisplayLayout"]=>
  string(8) "template"
  ["bIsSample"]=>
  bool(false)
  ["iThemeId"]=>
  int(0)
  ["sReservedVarname:protected"]=>
  string(6) "test"
  ["sLeftDelim:protected"]=>
  string(1) "{"
  ["sRightDelim:protected"]=>
  string(1) "}"
  ["_aPlugins:protected"]=>
  array(0) {
  }
  ["_aSections:private"]=>
  array(0) {
  }
  ["_aVars:private"]=>
  array(56) {
    ["bUseFullSite"]=>
    bool(false)
    ["aFilters"]=>

2 个答案:

答案 0 :(得分:4)

var_dump输出的:private部分实际上不是成员名称的一部分,它表示_aVars成员是private

因为_aVars是私有的,所以无法从对象外部访问它的值,只能从内部访问。

您需要一个公共getter函数或类似的函数才能检索该值。

修改

为了帮助澄清这一点,我做了一个例子:

class testClass {
    public $x = 10;
    private $y = 0;
}

$obj = new testClass();
echo "Object: ";
var_dump($obj);
echo "Public property:";
var_dump($obj->x);
echo "Private property:";
var_dump($obj->y);

上面的代码产生以下输出:

Object:

object(testClass)[1]
  public 'x' => int 10
  private 'y' => int 0

Public property:

int 10

Private property:

注意私有变量的var_dump()尝试之后没有任何结果。由于代码无法从外部访问$obj->y,这意味着var_dump()无法访问它以生成有关它的任何信息。

由于$obj是一个局部变量,var_dump()在那里工作正常。它是var_dump()的一个特定特性,它将输出有关受保护和私有对象成员变量的信息,这就是您在对象转储中看到它的原因。但这并不意味着您可以访问它们。

答案 1 :(得分:1)

您无法访问它,因为它是私有方法:)。我认为根本没有办法访问它,只要你不将它改为public