Junior — Middle
Como é que se podem chamar métodos privados de uma classe a partir de código externo?
sobes.tech IA
Resposta da IA
No PHP, os métodos privados de uma classe não são acessíveis diretamente do código externo, mas há várias formas de os chamar:
- Uso da Reflection API — permite aceder a métodos privados e invocá-los:
class MyClass {
private function secret() {
return "Método secreto";
}
}
$obj = new MyClass();
$reflection = new ReflectionClass($obj);
$method = $reflection->getMethod('secret');
$method->setAccessible(true); // Torna o método acessível
echo $method->invoke($obj); // Vai mostrar: Método secreto
-
Chamada através de um método público dentro da classe — se existir um método público que chama o privado.
-
Herança e sobrescrita (limitadas) — mas os métodos privados não são herdados diretamente.
Na maioria das vezes, a Reflection é usada para testes ou para contornar restrições.