You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Laravel Collection迭代过程中为元素添加类型注解

PhpStorm 迭代变量类型注解实现方案

你可以通过以下3种常用方式实现需求,PhpStorm 和 Psalm 均支持识别:

方法1:单行类型注解(临时指定,兼容性最好)

直接在foreach循环内为$row变量单独声明类型,是最通用的写法,所有版本IDE都能识别:

/**
     * @param Collection $rows
     */
    public function collection(Collection $rows)
    {
        foreach ($rows as $row)
        {
            /** @var Collection $row */
            dump($row->); // 此时$row已能获得Collection类的完整代码提示
        }
    }

方法2:泛型参数注解(更规范,符合Psalm标准)

直接在方法参数处声明集合的元素类型,用泛型写法一次性指定,不需要循环内重复注解:

/**
     * 尖括号内的类型参数代表集合内元素的类型
     * @param Collection<Collection> $rows
     */
    public function collection(Collection $rows)
    {
        foreach ($rows as $row)
        {
            dump($row->); // $row自动识别为Collection类型
        }
    }

方法3:自定义Collection类全局泛型声明(适合自研集合类场景)

如果你使用的是自己封装的Collection类,可以在类定义处提前声明泛型模板,后续所有使用该类的地方都可以直接用泛型指定元素类型:

/**
 * @template T
 * @implements IteratorAggregate<T>
 */
class Collection implements IteratorAggregate
{
    // 类的实现逻辑
}

之后你在任何地方使用Collection<Collection>声明变量,IDE都能自动识别迭代后元素的类型。

内容的提问来源于stack exchange,提问作者Eddy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 16:57:05