macroactive / laravel-psalm
Laravel与Psalm集成。不包含Facades。相对简单的集成
v9.0.5
2024-08-06 00:49 UTC
Requires
- php: >7.4
- ext-xml: *
- vimeo/psalm: >=4.7
Conflicts
- laravel/framework: <9.0
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()是范围注释的一种形式。