@ 2018-09-06T09:49:16Z <?php
function reflectCallable($arg): ReflectionFunctionAbstract {
if (is_array($arg)) {
$ref = new ReflectionMethod(...$arg);
} elseif (is_callable($arg)) {
$ref = new ReflectionFunction($arg);
}
return $ref;
}
function definedFunc(Foo $foo) {}
$callable = function(Foo $foo) {};
class Bar { public function baz(Foo $foo) {} }
foreach (['definedFunc', $callable, ['Bar', 'baz']] as $callable) {
$reflected = reflectCallable($callable);
if ((string) $reflected->getParameters()[0]->getType() === 'Foo') {
echo 'Callable takes Foo', PHP_EOL;
}
}
Enable javascript to submit You have javascript disabled. You will not be able to edit any code.
Output for 7.1.0 - 7.1.33 , 7.2.0 - 7.2.33 , 7.3.0 - 7.3.33 , 8.0.0 - 8.0.30 , 8.1.0 - 8.1.33 , 8.2.0 - 8.2.29 , 8.3.0 - 8.3.25 , 8.4.1 - 8.4.12 Callable takes Foo
Callable takes Foo
Callable takes Foo
Output for 7.4.0 - 7.4.33 Deprecated: Function ReflectionType::__toString() is deprecated in /in/c5vmM on line 19
Callable takes Foo
Deprecated: Function ReflectionType::__toString() is deprecated in /in/c5vmM on line 19
Callable takes Foo
Deprecated: Function ReflectionType::__toString() is deprecated in /in/c5vmM on line 19
Callable takes Foo
preferences:dark mode live preview ace vim emacs key bindings
114.87 ms | 407 KiB | 5 Q