Como usar o ReflectionParameter do PHP

Para obter uma instância do ReflectionParameter, primeiro você precisa criar um objeto ReflectionFunction ou um ReflectionMethod e, em seguida, chamar a função getParameters() da nova classe e, que retorna uma matriz de ReflectionParameter. Esse array permite identificar e tomar desições quanto aos parâmetros da função ou método alvo. Até vir a executar essa função/metodo com os tipos dos parâmetros corretos. Ou, gerar arquivos de classes que chamem corretamente a função/metodo.

function exampleFunction(int $a, string $b = 'default', &$c) { }
$reflectFunction = new ReflectionFunction('exampleFunction');
$parameters = $reflectFunction->getParameters();
foreach ($parameters as $param) {
printf("Parameter: %s\n", $param->getName());
printf("Position: %d\n", $param->getPosition());
// Check if parameter has a type
if ($param->hasType()) {
$type = $param->getType();
printf("Type: %s\n", $type->getName());
printf("Allows NULL: %s\n", var_export($param->allowsNull(), 1));
}
printf("Is optional?: %s\n", $param->isOptional() ? 'yes' : 'no');
printf("Passed by reference: %s\n", var_export($param->isPassedByReference(), 1));
// Get default value if available
if ($param->isDefaultValueAvailable()) {
printf("Default value: %s\n", var_export($param->getDefaultValue(), 1));
}
echo "\n";
}

É, preciso entender que toda function criada fora de uma classe é considerada um função, e deve utilizar a classe ReflectionFunction. Por outro lado, toda function criada dentro de uma classe é considerada um metodo e, nesse caso, deve ser utilizada o objeto ReflectionMethod.

Métodos-chave de ReflectionParameter

A classe ReflectionParameter recupera informações sobre os parâmetros de uma função ou método.

Métodos

getName(): Obtém o nome do parâmetro (sem o $sinal).
getType(): Retorna um objeto ReflectionType(ou ReflectionNamedType/ ReflectionUnionTypea partir do PHP 8.0), que pode ser consultado para obter informações de tipo.
isOptional(): Verifica se o parâmetro é opcional.
isDefaultValueAvailable(): Verifica se existe um valor padrão disponível.
getDefaultValue(): Obtém o valor padrão do parâmetro (gera uma exceção se não for opcional).
isPassedByReference(): Verifica se o parâmetro é passado por referência.
getAttributes(): Retorna uma matriz de ReflectionAttributeinstâncias associadas ao parâmetro.
isPromoted(): Verifica se o parâmetro é uma propriedade promovida (PHP 8.0+).

Para inspecionar os parâmetros de uma função, primeiro crie uma instância das classes ReflectionFunction ou ReflectionMethod e, em seguida, use seus método ReflectionFunctionAbstract::getParameters() para recuperar uma array de parâmetros.