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

Carbon静态宏中self::this()不被PHPStan识别,求正确PHPDoc注解?

解决PHPStan对Carbon静态宏闭包中self指向错误的PHPDoc注解方案

在Laravel的AppServiceProvider中注册Carbon宏时,使用官方推荐的静态闭包+self::this()写法:

Carbon::macro('customMethod', static function () {
    return self::this()->addDays(7);
});

PHPStan会错误判定闭包内的self指向AppServiceProvider,从而抛出“调用未定义静态方法”的提示。

要在遵循官方规范的前提下解决这个问题,只需给静态闭包添加@self(或@phpstan-self)PHPDoc注解,明确指定self的指向类型:

正确写法示例

Carbon::macro('customMethod', /** @self \Carbon\Carbon */ static function () {
    return self::this()->addDays(7);
});

注解说明

@self注解会告知PHPStan,当前闭包上下文里的self指代\Carbon\Carbon类,而非所在的AppServiceProvider,以此修正类型推断错误,同时保留官方推荐的静态闭包写法。

如果更倾向于使用PHPStan专属注解,也可以替换为@phpstan-self,效果完全一致:

Carbon::macro('customMethod', /** @phpstan-self \Carbon\Carbon */ static function () {
    return self::this()->addDays(7);
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 18:04:51