编程

在 Laravel 中解析单例

355 2023-05-31 18:11:00

在 Laravel 中,你可以将一个类注册成单例,使得解析时始终是同一个对象。

不过,你可能想创建该类的另一个实例。您可以在不通过 Laravel 容器的情况下手动构建类,但如果它有一堆依赖项,那可能会很乏味。您可以在没有Laravel容器的情况下手动构建类,但如果它有一堆依赖项,那可能会很繁杂。

使用 build 方法, Laravel 不会解析一个已经注册过的类实例,而是使用容器创建一个新的实例。

// AppServiceProvider::register()$this->app->singleton(MastodonClient::class);
// Resolve the singleton instance from the container$mastodon = resolve(MastodonClient::class);// Build a new instance$anotherMastodon = app()->build(MastodonClient::class);

当 Laravel 包将一个类注册成 singleton,但你需要另一个实例时,这可能很有用。