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

Laravel 10中方法返回类型定义含异常类是否合规?

问题解答

1. 返回类型声明错误

PHP的方法返回类型仅用于标注方法正常执行完成时返回值的类型,异常不属于返回值范畴,因此不能将ItemValidAccess(异常类)写入返回类型声明中。你当前的true | ItemValidAccess写法不符合PHP语法规范,正确的返回类型应该是bool(或者PHP 8.0+支持的字面量类型true)。

2. PHPDoc注释错误

@return标签仅用于描述方法正常返回的类型,异常的声明需要使用@throws标签。你不需要在@return里写异常类,而是添加@throws ItemValidAccess来标注该方法可能抛出的异常类型。

修正后的代码示例

/**
 * 判断登录用户是否有权限完成该项目
 *
 * @param  \App\Models\Item  $item
 * @throws ItemValidAccess 当用户不是项目创建者时抛出
 * @return true
 */
public static function onlyOwnerCanCompleteItem(Item $item): true {
    throw_if(
        $item->creator_id !== Auth::user()->id,
        ItemValidAccess::class,
        __('You are not allowed to complete this item')
    );

    return true;
}

补充说明

throw_if在条件满足时会直接中断程序执行并抛出异常,不会走到后续的return语句,因此不需要在throw_if后添加额外的return,这部分代码逻辑是没问题的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 19:22:47