要区分持续存在的单身人士和不在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/