1
0
mirror of https://github.com/php/php-src.git synced 2026-03-24 00:02:20 +01:00
Files
archived-php-src/Zend/tests/closures/closure_059.phpt
DanielEScherzer 8475d5fea1 Zend/tests: organize some tests with subdirectories (#15638)
Move some low-hanging fruit, creating new directories for the tests for

* access modifiers
* `class_alias()`
* constant expressions
* constructor property promotion
* `__debugInfo()`
* dereferencing
* first class callable syntax

Additionally, move some tests into the existing subdirectory for
closure-related tests

Work towards GH-15631
2024-10-13 14:21:07 +01:00

40 lines
786 B
PHP

--TEST--
Closure 059: Closure type declaration
--FILE--
<?php
class A {
}
class B {
}
$a = new A;
$b = new B;
$f = function (A $a){};
$f($a);
$f->__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: {closure:%s:%d}(): Argument #1 ($a) must be of type A, B given, called in %s on line %d
Exception: {closure:%s:%d}(): Argument #1 ($a) must be of type A, B given
Exception: {closure:%s:%d}(): Argument #1 ($a) must be of type A, B given