Sobes.tech
Junior — Middle

Как по програмен начин да се достъпи до частните полета на клас, без да се редактира неговият изходен код?

sobes.tech AI

Отговор от AI

В PHP можете да се обърнете към частните полета на класа с помощта на рефлексия (Reflection). Това позволява да получите достъп до свойства и методи, дори ако са обявени като private или protected, без да променяте изходния код на класа.

Пример:

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

$obj = new MyClass();

$reflection = new ReflectionClass($obj);
$property = $reflection->getProperty('secret');
$property->setAccessible(true); // правим частното свойство достъпно

echo $property->getValue($obj); // ще изведе 'hidden'

По този начин, с ReflectionProperty::setAccessible(true), можете да получите и промените частни полета.