PHP - Laravel Collection 或 Array 的类型提示

2024-01-11

我想创建一个接受任何可遍历对象作为参数的函数,例如 Laravel Collection/Array。有没有办法在函数参数中输入提示这个条件?

我希望在单一定义中实现以下两个效果:

function test(array $traversable)
{
    print_r($traversable);
}

AND

function test(Illuminate\Support\Collection $traversable)
{
    print_r($traversable);
}

并且 DocBlock 应该是

/**
 * Function to do something
 * 
 * @param Collection|Array $traversable Traversable parameter
 * @return null Absolutely nothing
 */

PHP 7.1 将引入iterabletypehint 将会做到这一点:

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

See PHP - rfc:可迭代 https://wiki.php.net/rfc/iterable.

在此之前,如果您想同时接受两者,则不能使用任何类型提示Traversable and array。你唯一能做的就是使用合适的@param注释来记录它:

/**
 * @param \Traversable|array $items
 */
function test($items) { /*...*/ }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHP - Laravel Collection 或 Array 的类型提示 的相关文章

随机推荐