Laravel Facades-将参数传递给__construct()

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

如果我正在创建Facade,并且希望在实例化前传递参数,该怎么办?

php laravel laravel-4 facade
1个回答
-1
投票

Facade的基础服务是通过IoC容器解析的,因此您所要做的就是正确地绑定它。

创建Service Provider,然后传递您想要的任何内容:

use Illuminate\Support\ServiceProvider;

class FooServiceProvider extends ServiceProvider {

    public function register()
    {
        $this->app->bind('foo', function()
        {
            return new Foo('pass whatever you want');
        });
    }
}

不要忘记在应用程序的配置数组中加载服务提供商。

然后在您的外观中使用该绑定键:

class Bar extends Facade {

    protected static function getFacadeAccessor() { return 'foo'; }

}
© www.soinside.com 2019 - 2024. All rights reserved.