Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Como faço para diferenciar entre singletons que persistem e aqueles que não estão em octano


Como faço para diferenciar entre singletons que persistem e aqueles que não estão em octano


Para diferenciar entre singletons que persistem e aqueles que não estão no Laravel Octane, você precisa entender como o octano lida com as instâncias de singleton e como elas são resolvidas. Aqui estão os principais pontos a serem considerados:

singletons que persistem

1. Singletons em provedores de serviços: Singletons que são resolvidos dentro de provedores de serviços, especificamente nos métodos `boot` ou` registr ', persistirão entre solicitações. Isso ocorre porque esses singletons são resolvidos durante o bootstrapping de aplicação e são armazenados no cache do contêiner.

2. Serviços quentes: Você pode adicionar singletons à matriz `wark 'no arquivo de configuração de octanas para garantir que eles sejam resolvidos e persistidos durante o bootstrapping de aplicativo. Dessa forma, esses singletons estarão disponíveis em todas as solicitações.

singletons que não persistem

1. Singletons no manuseio de solicitações: Singletons que são resolvidos durante o manuseio de solicitações não persistirão. Eles são construídos em todas as solicitações e não são armazenados no cache do contêiner.

2. Serviços de descarga: se você tiver um pacote que registre e resolva um singleton dentro de um provedor de serviços e deseja liberar essa instância antes de cada solicitação, poderá adicioná -lo à matriz 'Flush' no arquivo de configuração de octane. Isso garante que o singleton seja removido do contêiner após o manuseio de cada solicitação.

Melhores práticas

1. Use retornos de chamada: Ao registrar singletons, use retornos de chamada em vez da instância real para garantir que eles sejam resolvidos apenas uma vez.

2. Evite propriedades estáticas: evite o uso de propriedades estáticas em seus singletons, pois eles podem levar a vazamentos de memória e persistir entre solicitações.

3. Use Constantes: Use constantes em vez de propriedades estáticas, quando possível para garantir a imutabilidade.

4. Instância de solicitação: Ao resolver singletons, passe um retorno de chamada para garantir que a instância da solicitação seja resolvida corretamente.

5. Repositório de configuração: use a função `config ()` auxiliar em vez de injetar o repositório de configuração para garantir que ela seja resolvida corretamente.

Seguindo essas práticas recomendadas e entender como o octano lida com as instâncias de singleton, você pode gerenciar e diferenciar efetivamente entre singletons que persistem e aqueles que não estão em seu aplicativo Laravel em execução no octano [2] [4] [5].

Citações:
[1] https://laracasts.com/discuss/channels/laravel/singletone-not-working-s--laravel
[2] https://divinglaravel.com/laravel-octane-bootstrappation-the-aplication-e-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/