31 lines
628 B
PHP
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...
|