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

Laravel 10访问器未声明:Attribute返回类型时失效的原因咨询

Laravel 10访问器未声明返回类型失效的原因

这是Laravel 10对新型Attribute访问器的识别逻辑导致的,和PHP严格类型模式无关:

  • Laravel 10引入的基于Attribute类的访问器/修改器,不再依赖旧版get{Attribute}Attribute的命名规则,而是靠方法的返回类型声明来识别。
  • 框架内部会检查方法的返回类型提示:只有当方法明确标注返回Attribute类时,Laravel才会将其注册为对应属性的访问器;如果没加这个返回类型,框架会直接忽略该方法,不会把它和模型属性关联起来。
  • 旧版访问器不需要返回类型是因为靠命名规则识别,但新型Attribute访问器的识别逻辑完全不同,这是Laravel框架层面的硬性规则,和PHP是否开启严格类型无关。

举个对比例子:

旧版命名规则访问器(无需返回类型):

protected function getIsPublishedAttribute($value)
{
    return $value ? 'yes' : 'no';
}

新型Attribute访问器(必须声明返回类型):

protected function isPublished(): Attribute
{
    return Attribute::make(
        get: fn($value) => $value ? 'yes' : 'no',
    );
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 16:03:14