当我将一个类强制转换为数组时,键的名称将不同,具体取决于class属性具有的访问器。
公共属性始终与属性名称具有相同的键,但是私有属性以开头,X受保护的属性以开头*。
我正在PHP文档中寻找有关此行为的参考,但未找到任何参考。我已经在PHP 5.6和7.1中复制了此代码。
为什么会这样?这是在某处记录的吗?
<?php
class X {
private $a = 1;
protected $b = 2;
public $c = 3;
}
$class = new X();
var_dump((array) $class);
Run Code Online (Sandbox Code Playgroud)
array(3) {
["Xa"]=>
int(1)
["*b"]=>
int(2)
["c"]=>
int(3)
}
Run Code Online (Sandbox Code Playgroud)