我正在尝试回显并访问[“_aVars:private”]
中存储的值$ obj-> _vars和$ obj-> _vars:private不起作用:(
这是$ obj
的var_dumpobject(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"]=>
答案 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
。