我刚刚为我正在进行的一个项目克隆了一个存储库。我不太记得它运行的前一台机器的细节,但在这台机器上,它使用的是php 7.1,我升级到了Laravel 5.7。问题是,在我以前的机器中,这段代码正在工作:
class ProductsController extends Controller
{
public function index() : Object
{
$products = Product::all();
return view('products.index', ['products' => $products]);
}
}
请注意对象返回类型。
在运行迁移和其他一切之后,当访问索引时,我在新机器中收到以下错误:
App\Http\Controllers\ProductsController::index((的返回值必须是App\Http\Controllers\Object的实例,Illuminate\View\View的实例返回
这与返回类型提示为Object有关。我怎么知道?因为如果我去掉它,一切都像魅力一样。
为什么会发生这种情况?
所以,对于任何感兴趣的人来说,我从另一个论坛得到了答案:
只需先导入类:
use IlluminateViewView;
然后将其用作返回类型:
/**
* @return View
*/
public function index(): View
{
$products = Product::all();
return view('products.index', ['products' => $products]);
}