barryvdh / laravel-stack-middleware
Laravel 中间件栈
v1.4.0
2024-05-13 13:49 UTC
Requires
- php: ^8
- illuminate/support: ^9|^10|^11
- symfony/http-kernel: ^6|^7
Requires (Dev)
- orchestra/testbench: ^7|^8|^9
README
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',
示例与实现
- StackRobots:只需要求并使用上面的示例。
- HttpCache: https://github.com/barryvdh/laravel-httpcache
更多信息
有关更多信息,请参阅 StackPHP 网站。