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.