PHP - Laravel Collection或Array的类型提示

时间:2016-09-09 07:48:09

标签: php laravel type-hinting

我想创建一个接受任何可遍历对象作为参数的函数,例如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
 */

1 个答案:

答案 0 :(得分:7)

PHP 7.1将引入iterable类型提示,它将完全执行此操作:

function test(iterable $items) { /*...*/ }

请参阅PHP - rfc:iterable

在此之前,如果您要同时接受Traversablearray,则无法使用任何类型提示。您唯一能做的就是使用正确的@param注释来记录它:

/**
 * @param \Traversable|array $items
 */
function test($items) { /*...*/ }