1--TEST--
2Testing Closure::fromCallable() functionality: Reflection
3--FILE--
4<?php
5
6class Bar {
7	public static function staticMethod(Bar $bar, int $int, $none) {}
8	public static function instanceMethod(Bar $bar, int $int, $none) {}
9}
10
11function foo(Bar $bar, int $int, $none) {
12
13}
14
15$fn = function (Bar $bar, int $x, $none) {};
16$bar = new Bar();
17
18$callables = [
19	'foo',
20	$fn,
21	'Bar::staticMethod',
22	[$bar, 'instanceMethod']
23];
24
25
26foreach ($callables as $callable) {
27	$closure = Closure::fromCallable($callable);
28	$refl = new ReflectionFunction($closure);
29	foreach ($refl->getParameters() as $param) {
30		if ($param->hasType()) {
31			$type = $param->getType();
32			echo $type->getName() . "\n";
33		}
34	}
35}
36
37?>
38--EXPECTF--
39Bar
40int
41Bar
42int
43Bar
44int
45Bar
46int
47