Sobes.tech
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.