Sobes.tech
Junior — Middle

Como é que se pode aceder programaticamente a campos privados de uma classe, sem editar o seu código fonte?

sobes.tech IA

Resposta da IA

Em PHP, é possível aceder a campos privados de uma classe usando reflexão (Reflection). Isto permite aceder a propriedades e métodos, mesmo que estejam declarados como private ou protected, sem alterar o código fonte da classe.

Exemplo:

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

$obj = new MyClass();

$reflection = new ReflectionClass($obj);
$property = $reflection->getProperty('secret');
$property->setAccessible(true); // torna a propriedade privada acessível

echo $property->getValue($obj); // irá mostrar 'hidden'

Desta forma, com ReflectionProperty::setAccessible(true), é possível obter e modificar campos privados.