Um zwischen Singletons zu unterscheiden, die bestehen, und solchen, die nicht in Laravel Octane sind, müssen Sie verstehen, wie Oktan mit Singleton -Instanzen umgeht und wie sie gelöst werden. Hier sind die wichtigsten Punkte zu berücksichtigen:
Singletons, die bestehen bleiben
1. Singletons in Dienstleistern: Singletons, die in Dienstleister gelöst werden, insbesondere in den Methoden "Boot" oder "Register", werden über Anfragen hinweg bestehen. Dies liegt daran, dass diese Singletons während der Anwendungsbootstrapping aufgelöst und im Container -Cache gespeichert werden.
2. Warm Services: Sie können Singletons zum "Warm" -Array in der Octane -Konfigurationsdatei hinzufügen, um sicherzustellen, dass sie während des Anwendungsbootstrappings behoben und fortgesetzt werden. Auf diese Weise werden diese Singletons für alle Anfragen verfügbar sein.
Singletons, die nicht bestehen
1. Singletons in der Anfragehandhabung: Singletons, die während der Anfrage gelöst werden, bleiben nicht bestehen. Sie werden auf jeder Anfrage gebaut und nicht im Container -Cache gespeichert.
2. Flush Services: Wenn Sie ein Paket haben, das einen Singleton in einem Dienstanbieter registriert und behebt, und diese Instanz vor jeder Anfrage spülen möchten, können Sie es dem "Flush" -Array in der Octane -Konfigurationsdatei hinzufügen. Dies stellt sicher, dass der Singleton nach dem Umgang mit jeder Anfrage aus dem Container entfernt wird.
Best Practices
1. Verwenden Sie Rückrufe: Wenn Sie Singletons registrieren, verwenden Sie Rückrufe anstelle der tatsächlichen Instanz, um sicherzustellen, dass sie nur einmal gelöst werden.
2. Vermeiden Sie statische Eigenschaften: Vermeiden Sie die Verwendung statischer Eigenschaften in Ihren Singletons, da diese zu Speicherlecks führen und über Anfragen hinweg bestehen können.
3. Verwenden Sie Konstanten: Verwenden Sie Konstanten anstelle von statischen Eigenschaften, wenn möglich, um die Unveränderlichkeit zu gewährleisten.
4. Anforderungsinstanz: Wenn Sie Singletons auflösen, geben Sie einen Rückruf weiter, um sicherzustellen, dass die Anforderungsinstanz korrekt gelöst wird.
5. Konfigurationsrepository: Verwenden Sie die Funktion "config ()" Helfer, anstatt das Konfigurationsrepository zu injizieren, um sicherzustellen, dass sie korrekt aufgelöst wird.
Indem Sie diesen Best Practices befolgen und verstehen, wie Oktan mit Singleton -Instanzen umgeht, können Sie effektiv verwalten und zwischen Singletons, die bestehen, und solche, die nicht in Ihrer Laravel -Anwendung auf Oktan ausgeführt werden [2] [4] [5], effektiv verwalten und unterscheiden.
Zitate:[1] https://laracasts.com/discuss/channels/laravel/singletone-not-working-in-laravel
[2] https://divinglaravel.com/laravel-octane-bootstrapping-the-Application-andling-requests
[3] https://grantwinney.com/diffferenz-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/