如何在迭代期间注释 Laravel 集合元素

How to annotate Laravel Collection elements during iteration

我在考虑如何在 PhpStorm 中注释类型。我相信 PhpStorm 正在使用 Psalm 来解析类型,但我无法在此处找到如何注释类型以获取建议:

$row 在我的应用程序中将始终是 Collection 对象,我想在此处用注释标记它。

有人知道如何实现吗?

    /**
     * @param Collection $rows
     */
    public function collection(Collection $rows)
    {
        foreach ($rows as $row)
        {
            dump($row->); // $row is also Collection object
        }
    }

你可以这样标记变量类型:

/**
 @var $row Collection
**/
dump($row->);

https://intellij-support.jetbrains.com/hc/en-us/community/posts/115000701884-Using-var-type-hinting-with-properties-instantiated-by-Traits

您可以使用泛型:

    /**
     * @param Collection<Collection> $rows
     */
    public function collection(Collection $rows)
    {
        foreach ($rows as $row)
        {
            dump($row->); // $row is also Collection object
        }
    }

大多数现代 IDE 都支持,例如 PHPStorm。