Maison >développement back-end >tutoriel php >Comment résoudre les exceptions de sérialisation avec des fermetures dans Zend Mail Transport ?
Exception de sérialisation avec fermetures
Problème :
Lors de l'utilisation de fermetures dans la méthode _initMailer, les tests échouent à l'exception : "La sérialisation de 'Closure' n'est pas autorisée."
Cause :
Les fonctions anonymes ne peuvent pas être sérialisées. Dans le code fourni, une fermeture est utilisée comme paramètre de rappel pour le transport Zend_Mail_Transport_File.
Solution 1 : Remplacer la fermeture par une fonction régulière
Remplacer la fermeture par une fonction régulière définie en dehors de la méthode _initMailer. Par exemple :
<code class="php">function emailCallback() { return 'ZendMail_' . microtime(true) . '.tmp'; } $callback = "emailCallback";</code>
Solution 2 : Utiliser l'appel de méthode indirect via une variable de tableau
Vous pouvez également utiliser une variable de tableau pour appeler indirectement une méthode dans votre classe comme rappel. Reportez-vous à la documentation Zend Mail pour plus de détails :
<code class="php">$callback = array($this, "aMethodInYourClass");</code>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!