Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon 我如何区分持续存在的单例和不在辛烷值的单例


我如何区分持续存在的单例和不在辛烷值的单例


要区分持续存在的单身人士和不在Laravel Octane中的单例,您需要了解辛烷值如何处理单身实例以及如何解决。这是要考虑的要点:

###持续存在的单例

1。服务提供商中的单例:在服务提供商内解决的单例,特别是在“启动”或“注册”方法中,将在请求中持续存在。这是因为这些单例在应用程序引导过程中已解决,并存储在容器缓存中。

2。温暖的服务:您可以在辛烷值配置文件中的“温暖”阵列中添加单例,以确保它们在应用程序自举期间已解决和持久。这样,这些单例将在所有请求中可用。

###不坚持的单例

1。请求处理中的单例:在请求处理过程中解决的单例不会持续。它们是在每个请求上构造的,并且不存储在容器缓存中。

2.齐平服务:如果您有一个软件包,可以在服务提供商中注册并解析单例,并且要在每个请求之前先冲洗该实例,则可以将其添加到Octane配置文件中的“ flush”阵列中。这样可以确保在处理每个请求后,将单例从容器中删除。

###最佳实践

1。使用回调:注册单例时,使用回调而不是实际实例,以确保仅解决一次。

2。避免静态属性:避免在单单层中使用静态属性,因为它们可以导致内存泄漏并在请求中持续存在。

3。使用常数:在可能的情况下使用常数代替静态特性来确保不变性。

4。请求实例:解决单程时,通过回调以确保正确解决请求实例。

5。配置存储库:使用`config()`助手函数,而不是注入配置存储库以确保其正确解决。

通过遵循这些最佳实践并了解辛烷值如何处理单例实例,您可以有效地管理并区分持续存在的单例与在辛烷值[2] [4] [5]上运行的Laravel应用程序中不存在的单例。

引用:
[1] https://laracasts.com/discuss/channels/laravel/singletone-not-working-in-laravel
[2] https://divinglaravel.com/laravel-octane-bootstapping-the-application-andhernling-requests
[3] https://grantwinney.com/difference-betneweween-singleton-scoped-transient/
[4] https://betterprogramming.pub/the-downsides-of-coding-with-laravel-octane-17f4a7a4ea85?gi=d8afa39544408
[5] https://www.prismetric.com/laravel-octane/