如何用PHPDoc标记Laravel模型的user_id属性为废弃?
解决方案
针对PHP Intelephense的解析规则,有两种可靠的实现方式:
方式一:类级PHPDoc分开标注标签
将@deprecated作为独立标签行,明确指向user_id属性,同时保留@property定义类型:
/** * App\Task\Models\Task * * @property null|int $user_id * @deprecated $user_id 属性已废弃,请使用你的替代方案 */
这种写法下,Intelephense会正确识别废弃标记,访问$task->user_id时会弹出废弃提示。
方式二:属性级文档块标记
为user_id单独添加属性级文档块,直接声明废弃状态(Eloquent动态属性不受此声明影响):
/** * App\Task\Models\Task */ final class Task extends Model { protected $guarded = ['id']; protected $casts = [ 'user_id' => 'int', ]; protected $fillable = [ 'user_id', ]; /** * @deprecated 该属性已废弃,请使用指定替代方案 * @var null|int */ public $user_id; }
无效写法的原因
PHP Intelephense对PHPDoc标签的解析要求严格,不支持在同一行混合@property和@deprecated标签,必须拆分或使用属性级文档块才能被正确识别。
内容的提问来源于stack exchange,提问作者Jamie Woods
相关产品推荐
相关产品推荐

