Sobes.tech
Junior — Middle

Hoe kun je programmatisch toegang krijgen tot private velden van een klasse zonder de broncode te bewerken?

sobes.tech AI

Antwoord van AI

In PHP kun je met behulp van reflection (Reflection) toegang krijgen tot private velden van een klasse. Dit stelt je in staat om eigenschappen en methoden te verkrijgen, zelfs als ze als private of protected zijn gedeclareerd, zonder de broncode van de klasse te wijzigen.

Voorbeeld:

class MyClass {
    private $secret = 'hidden';
}

$obj = new MyClass();

$reflection = new ReflectionClass($obj);
$property = $reflection->getProperty('secret');
$property->setAccessible(true); // maakt private eigenschap toegankelijk

echo $property->getValue($obj); // zal 'hidden' tonen

Op deze manier kan met ReflectionProperty::setAccessible(true) private velden worden verkregen en gewijzigd.