<?php
namespace Knuckles\Scribe\Extracting;
use Illuminate\Foundation\Http\FormRequest;
use ReflectionClass;
use ReflectionException;
use ReflectionFunctionAbstract;
use ReflectionUnionType;
trait FindsFormRequestForMethod
{
protected function getFormRequestReflectionClass(ReflectionFunctionAbstract $method): ?ReflectionClass
{
foreach ($method->getParameters() as $argument) {
$argType = $argument->getType();
if ($argType === null || $argType instanceof ReflectionUnionType) continue;
$argumentClassName = $argType->getName();
if (!class_exists($argumentClassName)) continue;
try {
$argumentClass = new ReflectionClass($argumentClassName);
} catch (ReflectionException $e) {
continue;
}
if ($argumentClass->isSubclassOf(FormRequest::class)) {
return $argumentClass;
}
}
return null;
}
}