--TEST-- Closure 059: Closure type declaration --FILE-- __invoke($a); call_user_func(array($f,"__invoke"), $a); try { $f($b); } catch (Error $e) { echo "Exception: " . $e->getMessage() . "\n"; } try { $f->__invoke($b); } catch (Error $e) { echo "Exception: " . $e->getMessage() . "\n"; } try { call_user_func(array($f,"__invoke"), $b); } catch (Error $e) { echo "Exception: " . $e->getMessage() . "\n"; } --EXPECTF-- Exception: Argument 1 passed to {closure}() must be an instance of A, instance of B %s Exception: Argument 1 passed to {closure}() must be an instance of A, instance of B %s Exception: Argument 1 passed to {closure}() must be an instance of A, instance of B %s