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.