Sobes.tech
Middle

Para que serve a reflexão em PHP?

sobes.tech IA

Resposta da IA

A reflexão em PHP permite explorar e modificar a estrutura do código em tempo de execução. Isso inclui obter informações sobre classes, objetos, métodos, propriedades, constantes e espaços de nomes.

Principais aplicações:

  • Introspeção: Obter metadados sobre o código existente (nomes de métodos, argumentos, modificadores de acesso).
  • Criação dinâmica de objetos e chamada de métodos: Criar instâncias de classes e chamar seus métodos pelo nome de string.
  • Desenvolvimento de frameworks e bibliotecas: Criar sistemas flexíveis capazes de analisar e interagir com o código do utilizador (por exemplo, contêineres IoC, ORM).
  • Depuração e testes: Ferramentas para analisar o código em tempo de execução.
  • Geração automática de documentação.

Exemplo de obtenção de informações sobre uma classe usando ReflectionClass:

<?php
// Obtenção de informações sobre a classe stdClass
$reflectionClass = new ReflectionClass('stdClass');

echo $reflectionClass->getName(); // Vai mostrar: stdClass

$methods = $reflectionClass->getMethods();
foreach ($methods as $method) {
    echo $method->getName() . "\n"; // Vai mostrar os nomes dos métodos (se houver)
}

Exemplo de chamada dinâmica de método:

<?php
class MyClass {
    public function myMethod($arg) {
        return "Olá, " . $arg;
    }
}

$className = 'MyClass';
$methodName = 'myMethod';
$argument = 'mundo';

$reflectionMethod = new ReflectionMethod($className, $methodName);
$object = new $className();

$result = $reflectionMethod->invoke($object, $argument);
echo $result; // Vai mostrar: Olá, mundo