PHP Reflection é seu amigo

Reflexão / introspecção é aquilo de que você não precisa até fazer. E quando o faz, geralmente esquece que está lá. Em suma, a reflexão permite que você olhe para uma classe ou método de classe e mostre sua estrutura para seu código.

Nós o usamos em dois lugares na base de código CASH Music, e é inestimável em ambos.

O primeiro é o roteamento da estrutura principal. A nossa é uma besta complicada com múltiplas camadas de abstração. A estrutura principal foi projetada para funcionar com um fluxo de trabalho de solicitação / resposta e queremos que seja o mais amigável possível. Portanto, para fazer uma chamada, basta instanciar um novo objeto de solicitação, passando a ele uma matriz com chave contendo seus parâmetros, incluindo o tipo de ação. O tipo de ação é correspondido a uma classe e função, que é analisada. A matriz pode conter parâmetros em qualquer ordem e, desde que os parâmetros necessários sejam encontrados, podemos reordenar, definir padrões e chamar a função auxiliar que faz todo o trabalho.

O segundo caso de uso é um pouco mais comum: documentação. Nosso gerador de documentos extrai blocos de documentos e, em seguida, encontra uma lista precisa de parâmetros usando reflexão básica – sempre atualizada e precisa, mesmo quando algum idiota como eu não comenta uma função muito bem.

O básico é um pouco assim:

$m = new ReflectionMethod($class_name, $method->getName());
$params
= $m->getParameters();
foreach ($params as $param) {
//$param is an instance of ReflectionParameter
$param
->getName(); // parameter name / string
$param
->isOptional(); // optional / bool
}

Mais sobre o roteamento da estrutura mais tarde. Mas dê uma boa olhada em Reflexão … em certas situações, é extremamente útil.