(PHP 7 >= 7.4.0, PHP 8)
get_mangled_object_vars — マングリングされたオブジェクトのプロパティを配列で返す
object
のプロパティを要素とする配列を返します。
配列のキーはメンバ変数の名前ですが、
注意すべき例外がいくつかあります。
private な変数については、キーの前にクラス名が付きます。
そして、protected な変数については、
キーの前に *
が付きます。
これらの付加される値は、両側に NUL
バイトが付いています。
未初期化の
型付きプロパティ
は黙って捨てられます。
object
オブジェクトのインスタンス。
アクセス権に関わらず、
object
の全てのプロパティを含む配列を返します。
例1 get_mangled_object_vars() の例
<?php
class A
{
public $public = 1;
protected $protected = 2;
private $private = 3;
}
class B extends A
{
private $private = 4;
}
$object = new B;
$object->dynamic = 5;
$object->{'6'} = 6;
var_dump(get_mangled_object_vars($object));
class AO extends ArrayObject
{
private $private = 1;
}
$arrayObject = new AO(['x' => 'y']);
$arrayObject->dynamic = 2;
var_dump(get_mangled_object_vars($arrayObject));
上の例の出力は以下となります。
array(6) { ["Bprivate"]=> int(4) ["public"]=> int(1) ["*protected"]=> int(2) ["Aprivate"]=> int(3) ["dynamic"]=> int(5) [6]=> int(6) } array(2) { ["AOprivate"]=> int(1) ["dynamic"]=> int(2) }