barryvdh/laravel-stack-middleware

Laravel 中间件栈

v1.4.0 2024-05-13 13:49 UTC

README

Tests Packagist License Latest Stable Version Total Downloads Fruitcake

Laravel 4 使用了 HttpKernelInterface 中间件,但 Laravel 5 使用了新的方式。此包提供了一种封装 StackPHP 中间件的方法,以便可以在 Laravel 5 中使用

首先,在您的 composer 文件中添加此包

composer require barryvdh/laravel-stack-middleware

更新后,将 ServiceProvider 添加到 config/app.php 中 providers 数组的列表中

Barryvdh\StackMiddleware\ServiceProvider::class,

使用方法

Stack 中间件通常需要一个内核。我们无法使用实际的内核,因此此包提供了一个。您可以使用 bind 方法将 Stack (HttpKernelInterface) 中间件包装并注册到 App 容器中。您可以在 Container 中的 stack 键下访问 StackMiddleware 类,或者使用 Facade(《Barryvdh\StackMiddleware\Facade》)。它也可以直接类型提示,例如在 ServiceProvider 的 boot() 方法中。

第一个参数是新的中间件名称。第二个参数可以是

  • 一个闭包,它接受新的内核作为第一个参数。
  • 要由 App 容器解析的类的名称。参数可以作为数组作为第三个参数提供。内核被添加到该数组中,因此它总是作为第一个参数注入。
app('stack')->bind('AddRobotsHeaders', 'League\StackRobots\Robots', ['env' => 'production', 'envVar' => 'APP_ENV']);
use League\StackRobots\Robots;
use Barryvdh\StackMiddleware\StackMiddleware;

public function boot(StackMiddleware $stack) {
    $stack->bind('AddRobotsHeaders', function($kernel) {
        return new Robots($kernel, 'production', 'APP_ENV');
    });
}

这两个例子具有相同的结果,您现在可以将 AddRobotsHeaders 添加到 Kernel.php 中的 $middleware 列表中

如果您想使用 Facade,可以将它添加到 config/app.php 中。然后您可以使用 Stack::bind(...) 代替。

    'Stack' => 'Barryvdh\StackMiddleware\Facade',

示例与实现

更多信息

有关更多信息,请参阅 StackPHP 网站

许可证

MIT