Щоб розмежовувати синглетони, які зберігаються, і тими, хто не в Laravel Octane, вам потрібно зрозуміти, як Octane обробляє екземпляри Singleton і як вони вирішуються. Ось ключові моменти, які слід врахувати:
синглтонів, які зберігаються
1. Синглтони в постачальниках послуг: синглтони, які вирішуються всередині постачальників послуг, зокрема в методах `boot` або` register`, зберігатимуться в різних запитах. Це пояснюється тим, що ці синглтони вирішуються під час завантаження програми і зберігаються в кеші контейнера.
2. Теплі послуги: Ви можете додати одиночки до масиву "теплий" у файлі конфігурації октану, щоб переконатися, що вони вирішуються та зберігаються під час завантаження додатків. Таким чином, ці одиночки будуть доступні для всіх запитів.
синглтонів, які не зберігаються
1. Сінглтони в обробці запитів: синглтони, які вирішуються під час обробки запиту, не зберігаються. Вони побудовані за кожним запитом і не зберігаються в кеші контейнера.
2. Послуги Flush: Якщо у вас є пакет, який реєструє та вирішує синглтон всередині постачальника послуг, і ви хочете розмивати цей екземпляр перед кожним запитом, ви можете додати його до масиву `flush` у файлі конфігурації октану. Це гарантує, що синглтон видаляється з контейнера після обробки кожного запиту.
найкращі практики
1. Використовуйте зворотні дзвінки: Під час реєстрації синглів використовуйте зворотні дзвінки замість фактичного екземпляра, щоб переконатися, що вони вирішуються лише один раз.
2. Уникайте статичних властивостей: Уникайте використання статичних властивостей у ваших одиночних днях, оскільки вони можуть призвести до витоків пам’яті та зберігаються у запитах.
3. Використовуйте константи: Використовуйте константи замість статичних властивостей, коли це можливо, щоб забезпечити незмінність.
201
5. Репозиторій конфігурації: Використовуйте функцію `config ()` Helper, а не вводити репозиторій конфігурації, щоб переконатися, що його правильно вирішено.
Дотримуючись цих найкращих практик та розуміння того, як Octane обробляє екземпляри Singleton, ви можете ефективно керувати та розмежовувати синглетони, які зберігаються, і тими, які не мають у вашому додатку Laravel, що працює на Octane [2] [4] [5].
Цитати:[1] https://laracasts.com/discuss/channels/laravel/singletone-not-working-in-laravel
[2] https://divinglaravel.com/laravel-octane-bootstrapping-the-application-and-handling-requests
[3] https://grantwinney.com/difference-betweard-singleton-scoped-transient/
[4] https://betterprogramming.pub/thewides-of-coding-with-laravel-octane-17f4a7a4ea85?gi=d8afa3954408
[5] https://www.prismetric.com/laravel-octane/