小编Fab*_*sso的帖子

升级到 Laravel 10 后,Larastan 抱怨收集方法参数

升级到 Laravel 10 后,我遇到了 Larastan 错误的困难时期。

下面的代码在 1 小时前还完全正常:

return $this->articleRepository->getDefaultArticles($organizationId)
    ->toBase()
    ->map(function (Article $article) {
        return new Content(
            $article->id,
            $article->title,
            $article->language,
        );
    })
    ->toArray();
Run Code Online (Sandbox Code Playgroud)

现在给我以下错误:

方法 Illuminate\Support\Collection<(int|string),Illuminate\Database\Eloquent\Model>::map() 的参数 #1 $callback 需要 callable(Illuminate\Database\Eloquent\Model, int|string): App\学院\内容,
关闭(应用程序\模型\文章):给出的应用程序\学院\内容

存储库方法有正确的提示:

/**
 * @return Collection<Article>
 */
public function getDefaultArticles(OrganizationId $organizationId): Collection
{
    /** @var Collection<Article> */
    return Article::query()
        ->where('organization_id', $organizationId)
        ->get()
        ->keyBy('id')
        ->values();
}
Run Code Online (Sandbox Code Playgroud)

它给了我 115 个新错误,其中大多数与此类似,与map和等收集方法相关reduce。

快速解决方案是使用临时变量并添加类型提示:

/** @var Collection<Article> $articles */
$articles = $this->articleRepository
    ->getDefaultArticles($organizationId)
    ->toBase();
Run Code Online (Sandbox Code Playgroud)

但我不想执行 100 …

php laravel phpstan laravel-10

5
推荐指数
1
解决办法
1246
查看次数

标签 统计

laravel ×1

laravel-10 ×1

php ×1

phpstan ×1