1--TEST-- 2callable type#001 3--FILE-- 4<?php 5 6class bar { 7 function baz() {} 8 static function foo() {} 9} 10function foo(callable $bar) { 11 var_dump($bar); 12} 13$closure = function () {}; 14 15foo("strpos"); 16foo("foo"); 17foo($closure); 18foo(array("bar", "foo")); 19foo(array("bar", "baz")); 20?> 21--EXPECTF-- 22string(6) "strpos" 23string(3) "foo" 24object(Closure)#%d (3) { 25 ["name"]=> 26 string(%d) "{closure:%s:%d}" 27 ["file"]=> 28 string(%d) "%s" 29 ["line"]=> 30 int(%d) 31} 32array(2) { 33 [0]=> 34 string(3) "bar" 35 [1]=> 36 string(3) "foo" 37} 38 39Fatal error: Uncaught TypeError: foo(): Argument #1 ($bar) must be of type callable, array given, called in %s:%d 40Stack trace: 41#0 %s(%d): foo(Array) 42#1 {main} 43 thrown in %s on line %d 44