Для чего получать доступ ко всем свойствам объекта и при этом не менять его интерфейс? Например, для того, чтобы написать свою сериализацию. Или чтобы передать объект в приемлемом виде используя http. Или для чего-нибудь ещё.
Возьмём для эксперимента простой класс.
class aClass
{
protected $protected_property = 'protected_value';
private $private_property = 'private_value';
public $public_property = 'public_value';
}
$an_object = new aClass;
var_dump($an_object);
// object(aClass)#1 (3) {
// ["protected_property":protected]=>
// string(15) "protected_value"
// ["private_property":"aClass":private]=>
// string(13) "private_value"
// ["public_property"]=>
// string(12) "public_value"
// }
Если использовать отражение, то получить все свойства объекта можно получить, например, вот такимЧитать полностью »