【问题标题】:Laravel 5.5 Error: "Class 'App\Http\Middleware\Middleware' not found"Laravel 5.5 错误:“找不到类 'App\Http\Middleware\Middleware'”
【发布时间】:2018-06-16 21:30:25
【问题描述】:

我在插入中间件时遇到了一个奇怪的问题。

这是我的错误:

"Class 'App\Http\Middleware\Middleware' not found"

这是我的代码:

在 app/Http/Middleware/AppVariables.php

namespace App\Http\Middleware;

use Closure;

class AppVariables extends Middleware
{
    public function handle($request, Closure $next)
    {
        ...
        return $next($request);
    }
}

在 app/Http/Kenrel.php

namespace App\Http;

use Illuminate\Foundation\Http\Kernel as HttpKernel;

class Kernel extends HttpKernel
{
    protected $middleware = [
        ...
        \App\Http\Middleware\AppVariables::class,
    ];
    ...

我尝试创建composer dump-autoload,在 Google 和此处搜索...没有任何帮助。我相信这一定是我刚刚忘记的一件愚蠢的事情。

【问题讨论】:

  • 你是如何解决这个问题的?

标签: php laravel middleware


【解决方案1】:

这行是问题所在:

class AppVariables extends Middleware

如果您不导入它,它将在同一名称中查找 Middleware

解决方法:删除extends Middleware:

class AppVariables

【讨论】:

  • 如果您打算将该类用作中间件,那么删除 extends Middleware 并不是一个好主意。其他框架代码依赖中间件从这个基类扩展。
  • 这是不正确的。中间件不需要扩展Middleware。当您使用 php artisan make:middleware 创建中间件时,它不会扩展任何类,RedirectIfAuthenticated 默认 Laravel 中间件也不会。
  • 你是对的,我的错。可以发誓有一个可用的基类。实际上,没有确保中间件具有所需方法的基类或接口似乎很奇怪。
  • 我的猜测是 OP 只是复制了类似 EncryptCookies 的东西,它扩展了 Middleware,这是一个别名 EncryptCookies:use Illuminate\Cookie\Middleware\EncryptCookies as Middleware;
  • 我们都去过,呵呵。我只是默认尽可能使用 laravel 的 php artisan make:something
【解决方案2】:

您不需要扩展中间件。

阅读官方document once

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-04
    • 1970-01-01
    • 2021-04-16
    • 2021-03-18
    • 2021-03-17
    • 2020-02-14
    • 1970-01-01
    相关资源
    最近更新 更多