在 Laravel 中,为什么“你应该只将东西绑定到服务容器中,而不要尝试注册其他任何东西......”

use*_*426 2 php service-provider laravel

当我发布此内容时,我确实看到了 SO 警告The question you're asking appears subjective and is likely to be closed

我继续发布它,因为它来自权威来源......这是实际的Laravel 文档

我问他们的意思是什么,以及可以为所给出的警告提供哪些示例(见下文)。

我正在阅读有关服务提供商的文档,发现以下内容:

写作服务提供商

所有服务提供者都扩展 Illuminate\Support\ServiceProvider 类。大多数服务提供者都包含寄存器和引导方法。在注册方法中,您应该只将事物绑定到服务容器中。您永远不应该尝试在 register 方法中注册任何事件侦听器、路由或任何其他功能。

来源在这里

没有给出例子,我不太明白他们的说法是什么意思。

答案可能已经在其他地方得到了回答,在这种情况下,我很抱歉,因为我没有找到它。

他们的意思是什么?您能举例说明什么是不应该做的吗?

Sap*_*aik 6

\n

注册所有提供程序后,它们是 \xe2\x80\x9cbooted\xe2\x80\x9d。

\n
\n

使用服务提供者时的一个常见错误是尝试在注册方法中使用另一个提供者提供的服务。由于在注册方法中,我们无法保证所有其他提供程序均已加载,因此您尝试使用的服务可能尚不可用。

\n

因此,使用其他服务的服务提供者代码应始终存在于 boot 方法中。您猜对了,register 方法应该仅用于向容器注册服务。在 boot 方法中,您可以执行任何您喜欢的操作:注册事件侦听器、包含路由文件、注册过滤器。

\n