Sobes.tech
Junior — Middle

Hogyan lehet programozott módon hozzáférni egy osztály privát mezőihez anélkül, hogy szerkesztenénk a forráskódját?

sobes.tech MI

Válasz az MI-től

PHP-ben a Reflection segítségével hozzáférhetünk egy osztály privát mezőihez. Ez lehetővé teszi, hogy hozzáférjünk a tulajdonságokhoz és metódusokhoz, még akkor is, ha azok private vagy protected módon vannak deklarálva, anélkül, hogy módosítanánk az osztály forráskódját.

Példa:

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

$obj = new MyClass();

$reflection = new ReflectionClass($obj);
$property = $reflection->getProperty('secret');
$property->setAccessible(true); // privát tulajdonság elérhetővé tétele

echo $property->getValue($obj); // kiírja, hogy 'hidden'

Így a ReflectionProperty::setAccessible(true) segítségével hozzáférhetünk és módosíthatunk privát mezőket.