Чтобы различить синглтонов, которые сохраняются, и теми, которые не в Ларавеле Октане, вам нужно понять, как октановые экземпляры и как они решаются. Вот ключевые моменты, которые следует рассмотреть:
Singletons, которые сохраняются
1. Синглтоны в поставщиках услуг: синглтоны, которые разрешаются внутри поставщиков услуг, в частности, в методах «Boot» или `Register`, будут сохраняться по запросам. Это связано с тем, что эти синглтоны разрешаются во время начальной загрузки приложения и хранятся в контейнерном кэше.
2. Теплые услуги: Вы можете добавить синглтонов в массив «Теплый» в файле конфигурации октана, чтобы убедиться, что они разрешены и сохраняются во время начальной загрузки приложения. Таким образом, эти синглтоны будут доступны по всем запросам.
синглтоны, которые не сохраняются
1. Однопольны в обработке запросов: синглтоны, которые разрешены во время обработки запросов, не сохранятся. Они построены по каждому запросу и не хранятся в контейнерном кеше.
2. Службы Flush: Если у вас есть пакет, который регистрирует и разрешает синглтона внутри поставщика услуг, и вы хотите пропустить этот экземпляр перед каждым запросом, вы можете добавить его в массив `flush` в файле конфигурации октана. Это гарантирует, что синглтон удаляется из контейнера после обработки каждого запроса.
Лучшие практики
1. Используйте обратные вызовы: при регистрации одиноких, используйте обратные вызовы вместо фактического экземпляра, чтобы убедиться, что они разрешаются только один раз.
2. Избегайте статических свойств: избегайте использования статических свойств в ваших синглетонах, поскольку они могут привести к утечкам памяти и сохраняются по запросам.
3. Используйте константы: используйте константы вместо статических свойств, когда это возможно, чтобы обеспечить неизменность.
4. Экземпляр запроса: при разрешении одиноких, передайте обратный вызов, чтобы убедиться, что экземпляр запроса разрешится правильно.
5. Репозиторий конфигурации: используйте функцию `config ()` helper вместо введения репозитория конфигурации, чтобы убедиться, что она правильно разрешена.
Следуя этими лучшими практиками и понимая, как октана обрабатывает экземпляры одиночных, вы можете эффективно управлять и дифференцировать между ними, которые сохраняются, и теми, которые не в вашем приложении Laravel, работающем на октане [2] [4] [5].
Цитаты:[1] https://laracasts.com/discuss/channels/laravel/singletone-notworking-in-laravel
[2] https://divinglaravel.com/laravel-octane-bootstrapping-the-pplication-and-handling-requests
[3] https://grantwinney.com/difference-between-singleton-coped-transient/
[4] https://betterprogramming.pub/the-downsides-of-coling-with-laravel-octane-17f4a7a4ea85?gi=d8afa39544408
[5] https://www.prismetric.com/laravel-octane/