Junior — Middle
Kā programmatiski piekļūt klases privātajiem laukiem, nemainot tās avota kodu?
sobes.tech AI
Atbilde no AI
PHP varat piekļūt privātajiem klases laukiem, izmantojot reflection (Reflection). Tas ļauj piekļūt īpašībām un metodēm, pat ja tās ir deklarētas kā private vai protected, nemainot klases avota kodu.
Piemērs:
class MyClass {
private $secret = 'hidden';
}
$obj = new MyClass();
$reflection = new ReflectionClass($obj);
$property = $reflection->getProperty('secret');
$property->setAccessible(true); // padara privāto īpašību pieejamu
echo $property->getValue($obj); // izvadīs 'hidden'
Tādējādi, izmantojot ReflectionProperty::setAccessible(true), ir iespējams iegūt un mainīt privātus laukus.