Php 在5.2.23的校验中,从laravel 4.2升级到5.1.11后的ReflectionException

Php 在5.2.23的校验中,从laravel 4.2升级到5.1.11后的ReflectionException,php,laravel,Php,Laravel,Route.php第264行中的ReflectionException:Class App\Http\Controllers\HomeController不存在 Routes.php Route::get('/', array( 'as' => 'home', 'uses' => 'HomeController@index', ));` 有趣的是,如果我像下面这样声明url,这个错误就会消失 Route::get('/', function(){ $obj = new

Route.php第264行中的ReflectionException:Class App\Http\Controllers\HomeController不存在

Routes.php

Route::get('/', array(
  'as' => 'home',
  'uses' => 'HomeController@index',
));`
有趣的是,如果我像下面这样声明url,这个错误就会消失

Route::get('/', function(){
  $obj = new HomeController();
  return $obj->index();
});

使用命令行创建控制器文件:

php artisan make:controller HomeController
打开控制器文件并检查名称空间是否正确

路线:

Route::get('/','HomeController@index');

这将重定向到“HomeController”中的“index”函数。

使用命令行创建控制器文件:

php artisan make:controller HomeController
打开控制器文件并检查名称空间是否正确

路线:

Route::get('/','HomeController@index');

这将重定向到“HomeController”中的“index”函数。

听起来您有名称空间问题

要开始,只需将$namespace设置为:

protected $namespace = 'App\Http\Controllers'; 
然后:

  • 确保
    App\Http\Controllers
    目录中的
    HomeController
  • HomeController
    以以下内容开头:

  • 听起来您好像遇到了名称空间问题

    要开始,只需将$namespace设置为:

    protected $namespace = 'App\Http\Controllers'; 
    
    然后:

  • 确保
    App\Http\Controllers
    目录中的
    HomeController
  • HomeController
    以以下内容开头:


  • 您的HomeController是否位于名称空间App\Http\Controllers中?我没有在HomeController.php文件中使用任何名称空间指令。在RouteserviceProvider.php类中,声明了受保护的$namespace='App\Http\Controllers',我想这会将我的Homecontroller放在您要求的名称空间中。粘贴来自Homecontroller的片段请在名称空间App\Http\Controllers中粘贴Homecontroller?我没有在Homecontroller.php文件中使用任何名称空间指令。在RouteserviceProvider.php类中,声明了受保护的$namespace='App\Http\Controllers',我想这会将我的Homecontroller置于您要求的命名空间中。请粘贴Homecontroller中的代码片段Homecontroller根据问题存在-通过运行make:controller命令,您可能会覆盖现有文件(取决于laravel处理现有文件的方式)@Chris我只是给出了创建控制器的完整流程。我理解,但我觉得这可能是最好的,误导的,最坏的,destructive@Chris我认为这是对的,但我也理解Sunil S Nair只是想让我重新启动它,然后重新检查控制器中的函数。这是arite,非常感谢你们两位HomeController的存在符合以下问题-通过运行make:controller命令,您可能会覆盖现有文件(取决于laravel处理现有文件的方式)@Chris我只是给出了创建控制器的完整流程。我理解,但我觉得这可能是最好的,误导的,最坏的,destructive@Chris我认为这是对的,但我也理解Sunil S Nair只是想让我重新启动它,然后重新检查控制器中的函数。这是arite,非常感谢你们两位。它是太好了!太好了!这是不是意味着,我必须在RoterServiceProvider.php和所有控制器中使用名称空间?服务提供商中的名称空间告诉router.php文件在哪里查找您的文件,因此您基本上不能再打开该文件。接下来,重要的一点是确保您的新控制器具有名称空间ilar到HomeController。这里有一个问题,请参阅我要扩展的控制器类位于app\http\Controllers文件夹中。这里的控制器类正在扩展BaseController类。但是通过写入,请使用Illumb\Routing\Controller;您不是要让它直接使用frameworks核心控制器类吗?可以吗?这取决于您是否希望X使用您自己的控制器,交换
    use
    语句以指向您的本地副本。我觉得您需要对名称空间有更深入的了解。这是一个很好的开始-如果您尚未注册laracasts,我建议您这样做。问题是,我无法指向所需的控制器。每当我尝试时,我的应用程序都会自动启动它不存在!但是,它确实存在!!好的,我会先阅读你提供的链接。它成功了!太棒了!这是否意味着,我必须在RoterServiceProvider.php和所有控制器中使用名称空间?服务提供商中的名称空间告诉router.php文件在哪里查找你的文件,因此你基本上不能再打开该文件。向前看,重要的一点是确保您的新控制器具有类似于HomeController的名称空间。这里有一个问题,请参阅我要扩展的控制器类位于app\http\controllers文件夹中。这里的控制器类正在扩展BaseController类。但是通过写入,请使用Illumb\Routing\Controller;您是否成功了直接使用frameworks core Controller类?可以吗?这取决于,如果您想扩展自己的控制器,请交换
    use
    语句以指向您的本地副本。我觉得您需要更深入地了解名称空间。这是一个很好的开始-如果您尚未注册laracasts,我建议您这样做问题是,我无法指向我想要的控制器。每当我尝试时,我的应用程序都会说它不存在!但是,它确实存在!!好的,我会先阅读你提供的链接。