Щоб відрізнити одиночні елементи, які зберігаються, і ті, які не зберігаються в Laravel Octane, вам потрібно зрозуміти, як Octane обробляє одиночні екземпляри та як вони вирішуються. Ось основні моменти, які слід враховувати:
Одиночки, які зберігаються
1. Синглети в постачальниках послуг: Синглетони, які вирішуються всередині постачальників послуг, зокрема в методах `boot` або `register`, зберігатимуться в усіх запитах. Це пояснюється тим, що ці синглтони вирішуються під час завантаження програми та зберігаються в кеші контейнера.
2. Warm Services: ви можете додати синглетони до масиву `warm` у файлі конфігурації Octane, щоб переконатися, що вони вирішуються та зберігаються під час початкового завантаження програми. Таким чином, ці синглтони будуть доступні для всіх запитів.
Синглтони, які не зберігаються
1. Синглетони в обробці запитів: Синглетони, які вирішуються під час обробки запитів, не збережуться. Вони створюються за кожним запитом і не зберігаються в кеші контейнера.
2. Flush Services: якщо у вас є пакет, який реєструє та вирішує одиночний елемент у постачальнику послуг, і ви хочете очистити цей екземпляр перед кожним запитом, ви можете додати його до масиву `flush` у файлі конфігурації Octane . Це гарантує, що синглтон буде видалено з контейнера після обробки кожного запиту.
Найкращі практики
1. Використовуйте зворотні виклики: під час реєстрації синглтонів використовуйте зворотні виклики замість фактичного екземпляра, щоб переконатися, що вони вирішуються лише один раз.
2. Уникайте статичних властивостей: уникайте використання статичних властивостей у своїх синглтонах, оскільки вони можуть призвести до витоку пам’яті та зберігатися в запитах.
3. Використовуйте константи: використовуйте константи замість статичних властивостей, коли це можливо, щоб забезпечити незмінність.
4. Екземпляр запиту: під час вирішення одиночних елементів передайте зворотний виклик, щоб переконатися, що екземпляр запиту розв’язано правильно.
5. Репозиторій конфігурації: використовуйте допоміжну функцію `config()` замість того, щоб вставляти репозиторій конфігурації, щоб переконатися, що воно вирішено правильно.
Дотримуючись цих найкращих практик і розуміючи, як Octane обробляє одиночні екземпляри, ви зможете ефективно керувати одиночними елементами, які зберігаються, і тими, які не зберігаються у вашій програмі 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-between-singleton-scoped-transient/
[4] https://betterprogramming.pub/the-downsides-of-coding-with-laravel-octane-17f4a7a4ea85?gi=d8afa3954408
[5] https://www.prismetric.com/laravel-octane/