作为这篇文章的最后一条评论,它指出以下内容:
您可以在任何服务提供商中轻松完成此操作(引导将是一个不错的地方,因为我们可以使用基于方法的 DI)。
public function boot(\Illuminate\Contracts\Http\Kernel $kernel) {
$kernel->appendMiddleware('Sheepy85\L5Localization\Middleware\Localization'); // prependMiddleware works too.
}
这是用于从服务提供者注入中间件的 Laravel 代码。
我正在尝试从Lumen Framework实现相同的目标,这是代码:
<?php namespace Acme\Slz\Providers;
use Illuminate\Contracts\Http\Kernel;
use Illuminate\Support\ServiceProvider;
class SlzServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
* @param Kernel $kernel
* @return void
*/
public function boot(Kernel $kernel)
{
// push the serializer middleware to the stack
$kernel->pushMiddleware(Acme\Slz\Middleware\Serializer::class);
}
/**
* Register any application services.
* This service provider is a great spot to register your various container
* bindings with the application. As you can see, we are registering our
* @return void
*/
public function register()
{
}
}
但这会引发以下错误:
lumen.ERROR: exception 'ErrorException' with message 'Argument 1 passed to Acme\Slz\Providers\SlzServiceProvider::boot() must be an instance of Illuminate\Contracts\Http\Kernel, none given
是否有更多的事情要做来启用 Lumen 的依赖容器?