Slide 28
Slide 28 text
プロパティの名前修飾(mangling)を見てみる
マングリングされたプロパティ名を
Reflectionを使えば確認できるらしい
ので実行してみた
(普通に出力するだけだと\0という
NULLバイト文字は出力されないので
ひと工夫が必要)
28
getProperties() as $prop) {
$prop->setAccessible(true);
$mangled_name = $prop->getName();
echo "Class:{$ref->getName()}, Property: {$mangled_name},
";
$prop_array = (array) $obj;
foreach ($prop_array as $key => $value) {
for($i = 0; $i < strlen($key); $i++) {
if ($key[$i] === "\0") {
$mangled_name = str_replace("\0", "\\0", $key);
break;
}
}
echo "Mangled Name: {$mangled_name} \n";
}
}
}
print_mangling(new Hoge());
print_mangling(new Foo());
print_mangling(new Bar());