macroactive/laravel-psalm

Laravel与Psalm集成。不包含Facades。相对简单的集成

v9.0.5 2024-08-06 00:49 UTC

This package is auto-updated.

Last update: 2024-09-06 01:00:38 UTC


README

为什么?

因为我们使用Laravel并希望拥有良好的Psalm覆盖率。是的,我们意识到了官方集成的存在。但它的规模更大,有一些泛化。我们的实现添加了一些代码限制,但希望更轻量级,并做出更好的检查。此外,这还是一个内部工具,因此可能仍然缺乏文档和其他缺点:/ 选择权在你——检查两者并找到最适合你的。

限制

我们尝试通过引入这些限制使代码更容易为Psalm理解,其理念是尽可能减少魔法的使用。

  • 所有模型请求必须以Model::query()开头
  • 不要使用Facades(我们将其视为反模式),仅应使用适当的构造函数/签名依赖注入
  • 模型必须有适当的注释。由ide-helper生成的版本必须进行调整
  • 我们不使用Eloquent集合,始终回退到Support集合

模型示例

//declare strict, NS and other usages here

use Illuminate\Support\Collection;

/**
 * @property int                                                                           $id
… other columns
 * @property-read       Collection|CountryRegion[] $regions
 * @psalm-property-read Collection<CountryRegion>  $regions
 *
 * @method self published()
 */
final class Country extends Model
{

您可以在此处看到关系/ro属性的Psalm注释。此外,方法published()是范围注释的一种形式。