61 : bool
62 {
63 try {
64 $r =
new ReflectionFunction(
$c);
65 if (count($r->getParameters()) !== 1) {
66 return false;
67 }
68 $first_param_type = $r->getParameters()[0]->getType();
69 if ($first_param_type instanceof ReflectionType && $first_param_type->getName() !== Component::class) {
70 return false;
71 }
72 $return_type = $r->getReturnType();
73 if ($return_type === null) {
74 return false;
75 }
76 if ($return_type->getName() !== Component::class) {
77 return false;
78 }
79
80 return true;
81 }
catch (\Throwable
$i) {
82 return false;
83 }
84 }