Php 7.1 Return 类型提示在 Laravel 5.7 中失败
Php 7.1 Return Type-hint failing in Laravel 5.7
我刚刚为我正在处理的项目克隆了一个存储库。不太记得上一台机器 运行 的细节,但在这台机器上它使用 php 7.1,我升级到 Laravel 5.7。问题是在我以前的机器上,这段代码是有效的:
class ProductsController extends Controller
{
public function index() : Object
{
$products = Product::all();
return view('products.index', ['products' => $products]);
}
}
通知 对象 return 类型。
在 运行 迁移和其他一切之后,当访问索引时,我在新机器中遇到以下错误:
Return value of App\Http\Controllers\ProductsController::index() must be an instance of App\Http\Controllers\Object, instance of Illuminate\View\View returned
这与 return 类型提示是对象有关。我怎么知道的?因为如果我删除它,一切都会像魅力一样。
为什么会这样?
所以,对于任何感兴趣的人,我从另一个论坛得到了答案:
只需首先导入 class:
use Illuminate\View\View;
然后将其用作 return 类型:
/**
* @return View
*/
public function index(): View
{
$products = Product::all();
return view('products.index', ['products' => $products]);
}
我刚刚为我正在处理的项目克隆了一个存储库。不太记得上一台机器 运行 的细节,但在这台机器上它使用 php 7.1,我升级到 Laravel 5.7。问题是在我以前的机器上,这段代码是有效的:
class ProductsController extends Controller
{
public function index() : Object
{
$products = Product::all();
return view('products.index', ['products' => $products]);
}
}
通知 对象 return 类型。
在 运行 迁移和其他一切之后,当访问索引时,我在新机器中遇到以下错误:
Return value of App\Http\Controllers\ProductsController::index() must be an instance of App\Http\Controllers\Object, instance of Illuminate\View\View returned
这与 return 类型提示是对象有关。我怎么知道的?因为如果我删除它,一切都会像魅力一样。
为什么会这样?
所以,对于任何感兴趣的人,我从另一个论坛得到了答案:
只需首先导入 class:
use Illuminate\View\View;
然后将其用作 return 类型:
/**
* @return View
*/
public function index(): View
{
$products = Product::all();
return view('products.index', ['products' => $products]);
}