class Secret {
private string $password = 'hidden';
}
// Через Reflection API
$obj = new Secret();
$ref = new ReflectionClass($obj);
$prop = $ref->getProperty('password');
$prop->setAccessible(true); // PHP < 8.1 требовался
echo $prop->getValue($obj); // "hidden"
// С PHP 8.1 setAccessible() не нужен
$prop = (new ReflectionClass($obj))->getProperty('password');
echo $prop->getValue($obj); // "hidden"
// Через Closure::bind (хитрый способ)
$getter = Closure::bind(fn() => $this->password, $obj, Secret::class);
echo $getter(); // "hidden"Reflection используется в DI-контейнерах, ORM, сериализаторах, тестовых фреймворках.