Publié le 2 février 2024
La 'once()' fonction a été initialement inspirée par ce tweet de Taylor Otwell , transformé en package par Spatie, et se retrouve désormais au cœur du framework Laravel dans Laravel 11 .
Cet assistant garantit que vous obtiendrez toujours la même valeur, quel que soit le nombre de fois que vous appelez une méthode objet. La fonction once est utile lorsque vous souhaitez vous assurer que du code ne s'exécute qu'une seule fois.
Utilisons la nouvelle 'make:class' commande Laravel 11 Artisan pour démontrer son fonctionnement :
Voici le 'OnceDemo' code qui montre comment fonctionne la mémorisation :
Si vous exécutez le code PHP suivant sans utiliser l' 'once()' assistant, vous obtiendrez un nouvel UUID à chaque appel de méthode :
Cependant, si vous exécutez le même code à l’aide de l’ 'once()' assistant, vous obtiendrez le même résultat à chaque fois :
Cette méthode renverra toujours la même instance d'objet dans notre exemple de démonstration, et vous pouvez vérifier ce comportement :
Lors de l'exécution de tests, la fonction de mémorisation doit être effacée après chaque test pour garantir que vous travaillez dans un état impeccable. Laravel s'occupe de ce détail pour vous dans la 'TestCase' classe de base en utilisant la 'Once::flush();' méthode.