vhost/tests/OOPExampleTest.php
2024-05-07 13:20:45 +09:00

31 lines
628 B
PHP

<?
class Foo
{
}
class NotFoo
{
}
class Bar
{
/**
* @param $_foos Foo[]
*/
public function doFoo(array $_foos, $_param2)
{
return (function (Foo ...$_foos) use ($_param2) {
return $_param2;
})(...$_foos);
}
}
$myBar = new Bar();
$arrayOfFoo = array(new Foo(), new Foo(), new Foo());
$notArrayOfFoo = array(new Foo(), new NotFoo(), new Foo());
echo $myBar->doFoo($arrayOfFoo, 'Success');
// Success
echo $myBar->doFoo($notArrayOfFoo, 'Success');
// Uncaught TypeError: Argument 2 passed to Bar::{closure}() must be an instance of Foo, instance of NotFoo given...