Объект может быть типизирован в (ассоциативный) массив, а защищенные члены имеют ключи с префиксом chr(0).'*'.chr(0)
(см. комментарий @ fardelian здесь ). Используя эту непризнанную функцию, вы можете написать «exposer»:
function getProtectedValue($obj,$name) {
$array = (array)$obj;
$prefix = chr(0).'*'.chr(0);
return $array[$prefix.$name];
}
В качестве альтернативы вы можете проанализировать значение из строки serialized , где (кажется) защищенные члены имеют одинаковые (надеюсь, что php 5.2 не изменил его).