Laravel 8: ReflectionException Function () does not exist



我是一个学习如何使用Laravel 8的初学者。当我试图执行我的代码时,我得到了错误:ReflectionException函数()不存在。

我已经参考了Laravel文档#Writing Controllers, #Basic Controllers部分的语法,但是这个问题无法解决。

造成这个问题的原因是什么?如何解决它?

以下代码是我在PurchaseController.php中的控制器部分:
<?php
namespace AppHttpControllers;
use IlluminateFoundationAuthAccessAuthorizesRequests;
use IlluminateFoundationBusDispatchesJobs;
use IlluminateFoundationValidationValidatesRequests;
use IlluminateRoutingController as BaseController;

class PurchasesController extends Controller
{
use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
public function index()
{
return view('purchases.index');
}
public function purchase()
{
//
}

下面是我在web.php

中的路由
<?php
use IlluminateSupportFacadesRoute;
use AppHttpControllersPurchaseController;
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/

Route::get('/purchases', [PurchaseController::class], 'index');
Route::post('/purchases', [PurchaseController::class], 'purchase');
Route::get('/', function () {
return view('welcome');
});

更新:我改变了我的代码网。App代码分成如下,根据下面提供的答案。然而,我得到了另一个错误信息:照亮合同容器BindingResolutionException目标类[AppHttpControllersPurchasesController]不存在

<?php
use IlluminateSupportFacadesRoute;
use AppHttpControllersPurchasesController;
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/

Route::get('/purchases', [PurchasesController::class, 'index']);
Route::post('/purchases', [PurchasesController::class , 'purchase']);
Route::get('/', function () {
return view('welcome');
});

我的更新PurchaseController.php代码:

<?php
namespace AppHttpControllers;
use IlluminateFoundationAuthAccessAuthorizesRequests;
use IlluminateFoundationBusDispatchesJobs;
use IlluminateFoundationValidationValidatesRequests;
use IlluminateRoutingController as BaseController;

class PurchasesController extends Controller   //Change the naming as suggestion below
{
use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
public function index()
{
return view('purchases.index');
}
public function purchase()
{
//
}

你应该这样写路由:

并将PurchaseController更改为PurchasesController

Route::get('/purchases', [PurchasesController::class, 'index']);
Route::post('/purchases', [PurchasesController::class, 'purchase']);

use AppHttpControllersPurchasesController;

=>打开AppProvidersRouteServiceProvider.php,取消这一行的注释,在laravel 8中试试

protected $namespace = 'AppHttpControllers';

相关内容

最新更新