流明/ Laravel错误-ReflectionException:类App \ Http \ Controllers \ Photos \ TestController不存在

问题描述 投票:0回答:1

我正在尝试以某种方式组织我的项目(流明/ laravel),以使我的控件位于子文件夹中以具有更多控件。我正在遵循官方的流明指南(https://lumen.laravel.com/docs/6.x/controllers),但问题如下:

在我的路由文件(routes / web.php)中,我有以下代码:

<?php

$router->get('test', 'Photos\TestController@show');

而且我的控制器位于app / Http / Controllers / Photos / TestController.php路径中,并具有以下代码:

<?php

namespace App\Http\Controllers;

class TestController extends Controller
{
  public function show(){
    return "hello";
  }
}

但是在请求URL http://localhost/myproject/public/test时,我收到以下消息:

Click to view

并且在我的日志文件(storage / logs / lumen-xx-xx-xx.log)中,出现以下错误:

[2020-01-19 02:59:12] local.ERROR: ReflectionException: Class App\Http\Controllers\Photos\TestController does not exist in C:\xampp\htdocs\colegio\vendor\illuminate\container\Container.php:803
Stack trace:
#0 C:\xampp\htdocs\colegio\vendor\illuminate\container\Container.php(803): ReflectionClass->__construct('App\\Http\\Contro...')
#1 C:\xampp\htdocs\colegio\vendor\illuminate\container\Container.php(681): Illuminate\Container\Container->build('App\\Http\\Contro...')
#2 C:\xampp\htdocs\colegio\vendor\illuminate\container\Container.php(629): Illuminate\Container\Container->resolve('App\\Http\\Contro...', Array)
#3 C:\xampp\htdocs\colegio\vendor\laravel\lumen-framework\src\Application.php(267): Illuminate\Container\Container->make('App\\Http\\Contro...', Array)
#4 C:\xampp\htdocs\colegio\vendor\laravel\lumen-framework\src\Concerns\RoutesRequests.php(311): Laravel\Lumen\Application->make('App\\Http\\Contro...')
#5 C:\xampp\htdocs\colegio\vendor\laravel\lumen-framework\src\Concerns\RoutesRequests.php(278): Laravel\Lumen\Application->callControllerAction(Array)
#6 C:\xampp\htdocs\colegio\vendor\laravel\lumen-framework\src\Concerns\RoutesRequests.php(263): Laravel\Lumen\Application->callActionOnArrayBasedRoute(Array)
#7 C:\xampp\htdocs\colegio\vendor\laravel\lumen-framework\src\Concerns\RoutesRequests.php(165): Laravel\Lumen\Application->handleFoundRoute(Array)
#8 C:\xampp\htdocs\colegio\vendor\laravel\lumen-framework\src\Concerns\RoutesRequests.php(416): Laravel\Lumen\Application->Laravel\Lumen\Concerns\{closure}(Object(Laravel\Lumen\Http\Request))
#9 C:\xampp\htdocs\colegio\vendor\laravel\lumen-framework\src\Concerns\RoutesRequests.php(171): Laravel\Lumen\Application->sendThroughPipeline(Array, Object(Closure))
#10 C:\xampp\htdocs\colegio\vendor\laravel\lumen-framework\src\Concerns\RoutesRequests.php(108): Laravel\Lumen\Application->dispatch(NULL)
#11 C:\xampp\htdocs\colegio\public\index.php(28): Laravel\Lumen\Application->run()
#12 {main}

Next Illuminate\Contracts\Container\BindingResolutionException: Target class [App\Http\Controllers\Photos\TestController] does not exist. in C:\xampp\htdocs\colegio\vendor\illuminate\container\Container.php:805
Stack trace:
#0 C:\xampp\htdocs\colegio\vendor\illuminate\container\Container.php(681): Illuminate\Container\Container->build('App\\Http\\Contro...')
#1 C:\xampp\htdocs\colegio\vendor\illuminate\container\Container.php(629): Illuminate\Container\Container->resolve('App\\Http\\Contro...', Array)
#2 C:\xampp\htdocs\colegio\vendor\laravel\lumen-framework\src\Application.php(267): Illuminate\Container\Container->make('App\\Http\\Contro...', Array)
#3 C:\xampp\htdocs\colegio\vendor\laravel\lumen-framework\src\Concerns\RoutesRequests.php(311): Laravel\Lumen\Application->make('App\\Http\\Contro...')
#4 C:\xampp\htdocs\colegio\vendor\laravel\lumen-framework\src\Concerns\RoutesRequests.php(278): Laravel\Lumen\Application->callControllerAction(Array)
#5 C:\xampp\htdocs\colegio\vendor\laravel\lumen-framework\src\Concerns\RoutesRequests.php(263): Laravel\Lumen\Application->callActionOnArrayBasedRoute(Array)
#6 C:\xampp\htdocs\colegio\vendor\laravel\lumen-framework\src\Concerns\RoutesRequests.php(165): Laravel\Lumen\Application->handleFoundRoute(Array)
#7 C:\xampp\htdocs\colegio\vendor\laravel\lumen-framework\src\Concerns\RoutesRequests.php(416): Laravel\Lumen\Application->Laravel\Lumen\Concerns\{closure}(Object(Laravel\Lumen\Http\Request))
#8 C:\xampp\htdocs\colegio\vendor\laravel\lumen-framework\src\Concerns\RoutesRequests.php(171): Laravel\Lumen\Application->sendThroughPipeline(Array, Object(Closure))
#9 C:\xampp\htdocs\colegio\vendor\laravel\lumen-framework\src\Concerns\RoutesRequests.php(108): Laravel\Lumen\Application->dispatch(NULL)
#10 C:\xampp\htdocs\colegio\public\index.php(28): Laravel\Lumen\Application->run()
#11 {main} {"exception":"[object] (Illuminate\\Contracts\\Container\\BindingResolutionException(code: 0): Target class [App\\Http\\Controllers\\Photos\\TestController] does not exist. at C:\\xampp\\htdocs\\colegio\\vendor\\illuminate\\container\\Container.php:805)
[stacktrace]
#0 C:\\xampp\\htdocs\\colegio\\vendor\\illuminate\\container\\Container.php(681): Illuminate\\Container\\Container->build('App\\\\Http\\\\Contro...')
#1 C:\\xampp\\htdocs\\colegio\\vendor\\illuminate\\container\\Container.php(629): Illuminate\\Container\\Container->resolve('App\\\\Http\\\\Contro...', Array)
#2 C:\\xampp\\htdocs\\colegio\\vendor\\laravel\\lumen-framework\\src\\Application.php(267): Illuminate\\Container\\Container->make('App\\\\Http\\\\Contro...', Array)
#3 C:\\xampp\\htdocs\\colegio\\vendor\\laravel\\lumen-framework\\src\\Concerns\\RoutesRequests.php(311): Laravel\\Lumen\\Application->make('App\\\\Http\\\\Contro...')
#4 C:\\xampp\\htdocs\\colegio\\vendor\\laravel\\lumen-framework\\src\\Concerns\\RoutesRequests.php(278): Laravel\\Lumen\\Application->callControllerAction(Array)
#5 C:\\xampp\\htdocs\\colegio\\vendor\\laravel\\lumen-framework\\src\\Concerns\\RoutesRequests.php(263): Laravel\\Lumen\\Application->callActionOnArrayBasedRoute(Array)
#6 C:\\xampp\\htdocs\\colegio\\vendor\\laravel\\lumen-framework\\src\\Concerns\\RoutesRequests.php(165): Laravel\\Lumen\\Application->handleFoundRoute(Array)
#7 C:\\xampp\\htdocs\\colegio\\vendor\\laravel\\lumen-framework\\src\\Concerns\\RoutesRequests.php(416): Laravel\\Lumen\\Application->Laravel\\Lumen\\Concerns\\{closure}(Object(Laravel\\Lumen\\Http\\Request))
#8 C:\\xampp\\htdocs\\colegio\\vendor\\laravel\\lumen-framework\\src\\Concerns\\RoutesRequests.php(171): Laravel\\Lumen\\Application->sendThroughPipeline(Array, Object(Closure))
#9 C:\\xampp\\htdocs\\colegio\\vendor\\laravel\\lumen-framework\\src\\Concerns\\RoutesRequests.php(108): Laravel\\Lumen\\Application->dispatch(NULL)
#10 C:\\xampp\\htdocs\\colegio\\public\\index.php(28): Laravel\\Lumen\\Application->run()
#11 {main}

[previous exception] [object] (ReflectionException(code: -1): Class App\\Http\\Controllers\\Photos\\TestController does not exist at C:\\xampp\\htdocs\\colegio\\vendor\\illuminate\\container\\Container.php:803)
[stacktrace]
#0 C:\\xampp\\htdocs\\colegio\\vendor\\illuminate\\container\\Container.php(803): ReflectionClass->__construct('App\\\\Http\\\\Contro...')
#1 C:\\xampp\\htdocs\\colegio\\vendor\\illuminate\\container\\Container.php(681): Illuminate\\Container\\Container->build('App\\\\Http\\\\Contro...')
#2 C:\\xampp\\htdocs\\colegio\\vendor\\illuminate\\container\\Container.php(629): Illuminate\\Container\\Container->resolve('App\\\\Http\\\\Contro...', Array)
#3 C:\\xampp\\htdocs\\colegio\\vendor\\laravel\\lumen-framework\\src\\Application.php(267): Illuminate\\Container\\Container->make('App\\\\Http\\\\Contro...', Array)
#4 C:\\xampp\\htdocs\\colegio\\vendor\\laravel\\lumen-framework\\src\\Concerns\\RoutesRequests.php(311): Laravel\\Lumen\\Application->make('App\\\\Http\\\\Contro...')
#5 C:\\xampp\\htdocs\\colegio\\vendor\\laravel\\lumen-framework\\src\\Concerns\\RoutesRequests.php(278): Laravel\\Lumen\\Application->callControllerAction(Array)
#6 C:\\xampp\\htdocs\\colegio\\vendor\\laravel\\lumen-framework\\src\\Concerns\\RoutesRequests.php(263): Laravel\\Lumen\\Application->callActionOnArrayBasedRoute(Array)
#7 C:\\xampp\\htdocs\\colegio\\vendor\\laravel\\lumen-framework\\src\\Concerns\\RoutesRequests.php(165): Laravel\\Lumen\\Application->handleFoundRoute(Array)
#8 C:\\xampp\\htdocs\\colegio\\vendor\\laravel\\lumen-framework\\src\\Concerns\\RoutesRequests.php(416): Laravel\\Lumen\\Application->Laravel\\Lumen\\Concerns\\{closure}(Object(Laravel\\Lumen\\Http\\Request))
#9 C:\\xampp\\htdocs\\colegio\\vendor\\laravel\\lumen-framework\\src\\Concerns\\RoutesRequests.php(171): Laravel\\Lumen\\Application->sendThroughPipeline(Array, Object(Closure))
#10 C:\\xampp\\htdocs\\colegio\\vendor\\laravel\\lumen-framework\\src\\Concerns\\RoutesRequests.php(108): Laravel\\Lumen\\Application->dispatch(NULL)
#11 C:\\xampp\\htdocs\\colegio\\public\\index.php(28): Laravel\\Lumen\\Application->run()
#12 {main}
"} 

我想知道我在做错什么,因为我多次阅读了文档,但仍然找不到解决方案,所以我也在互联网上进行了搜索,没有人问过。预先非常感谢。

php laravel namespaces lumen
1个回答
0
投票

由于控制器位于子文件夹中,因此您还需要通过添加其子文件夹来更改其名称空间,如下所示。

namespace App\Http\Controllers\Photos

然后可以将您的控制器扩展到Controller类。还要输入此代码。

use App\Http\Controllers\Controller
© www.soinside.com 2019 - 2024. All rights reserved.