我想创建一个接受任何可遍历对象作为参数的函数,例如Laravel Collection / Array。有没有办法在函数参数??
中键入提示这个条件我希望单个定义中以下两者的效果:
function test(array $traversable)
{
print_r($traversable);
}
和
function test(Illuminate\Support\Collection $traversable)
{
print_r($traversable);
}
和DocBlock应该是
/**
* Function to do something
*
* @param Collection|Array $traversable Traversable parameter
* @return null Absolutely nothing
*/
答案 0 :(得分:7)
PHP 7.1将引入iterable
类型提示,它将完全执行此操作:
function test(iterable $items) { /*...*/ }
在此之前,如果您要同时接受Traversable
和array
,则无法使用任何类型提示。您唯一能做的就是使用正确的@param
注释来记录它:
/**
* @param \Traversable|array $items
*/
function test($items) { /*...*/ }