Maison >développement back-end >tutoriel php >Comment résoudre l'exception « La sérialisation de la fermeture n'est pas autorisée » dans les tests Zend Mailer ?
Exception : la sérialisation de « Closure » n'est pas autorisée
Lors de l'exécution de tests utilisant la méthode _initMailer(), qui configure Zend initMailer pour l'application, l'exception suivante est rencontrée :
Exception: Serialization of 'Closure' is not allowed
L'exception provient de la fonction anonyme (fermeture) au sein de la méthode :
$callback = function () { return 'ZendMail_' . microtime(true) .'.tmp'; };
Les fonctions anonymes ne peuvent pas être sérialisées, ce qui entraîne à l'exception.
Solution 1 : Remplacer la fermeture par une fonction régulière
Remplacer la fonction anonyme par une fonction régulière :
function emailCallback() { return 'ZendMail_' . microtime(true) . '.tmp'; } $callback = "emailCallback" ;
Solution 2 : Appel de méthode indirecte à l'aide d'une variable de tableau
Vous pouvez également utiliser une variable de tableau pour appeler indirectement la méthode :
$callback = array($this, "aMethodInYourClass");
Cela vous permet de spécifier une méthode à partir de l'instance de classe sans problèmes de sérialisation.
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!