3v4l.org

run code in 500+ PHP versions simultaneously
<?php class FilterAssert { public static function boolean(callable $filter): void { switch ($filter) { case $filter instanceof Closure: $reflection = new ReflectionFunction($filter); break; case is_object($filter): $reflection = new ReflectionMethod($filter, '__invoke'); break; default: throw new InvalidArgumentException( sprintf('Expected Closure or invokable object on callable filter, %s given', gettype($filter)) ); } var_dump($reflection->getReturnType()); } } class A { public function b() {} } $filter = new class { public function __invoke(int $datum): bool { return $datum === 1; } }; FilterAssert::boolean($filter);
Output for 8.1.34, 8.2.0 - 8.2.30, 8.3.0 - 8.3.30, 8.4.1 - 8.4.18, 8.5.0 - 8.5.3
object(ReflectionNamedType)#3 (0) { }

preferences:
60.62 ms | 835 KiB | 4 Q