【发布时间】:2022-10-06 08:06:57
【问题描述】:
我想在 PHP 中定义方法的返回类型(特别是在 Laravel 中) 例如,通过 Id 获取模型:
public function show(int $id) {
try{
$student = Student::first($id);
return $student;
}
catch(Exception $exp){
throw Exception($exp)
}
}
代码可以正常工作,但是当我尝试在方法前面定义返回类型(本例中为学生)时:
public function show(int $id) : Student
我收到错误消息,指出显式返回类型与方法的返回值不匹配。
如何定义返回类型并处理异常?
-
请问异常处理的意义何在?您可以使用
Student::firstOrFail($id),这将引发错误并强制返回 JSON 响应,表示未找到提供的 ID 的实体。如果您真的想处理异常(first()不会抛出任何异常,因为如果查询返回空则返回null),您可以从数据库中选择学生,然后进行检查以验证学生是否是否为空(if (is_null($student) { ... }或if (!($student instanceof Student)) { ... }),如果它抛出StudentNotFoundException(创建它)。 -
此片段代码只是一个示例。我询问了具有各种可能返回类型的任何其他复杂情况。如果我创建 StudentNotFoundException,我仍然无法定义返回类型,对吗?
-
您可以在函数上方添加
/** @throws StudentNotFoundException */,以便IDE 会警告您在何处调用相同的函数。异常不是返回类型,您可以像现在一样继续返回Student(/** * @return Student * @throws StudentNotFoundException * @throws AnotherException */)