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 unitaires Zend Mail ?
Exception : la sérialisation de 'Closure' n'est pas autorisée
Lors de l'exécution de tests impliquant des fonctions de fermeture dans la méthode _initMailer de Zend, les développeurs peuvent rencontrer le exception suivante : Exception : la sérialisation de « Closure » n'est pas autorisée.
Cette erreur survient car les fonctions anonymes ne peuvent pas être sérialisées en raison de leur nature dynamique. Dans le code fourni, la fermeture est définie dans la méthode _initMailer :
$callback = function() { return 'ZendMail_' . microtime(true) .'.tmp'; };
Solution :
Il existe deux solutions viables à ce problème :
Solution 1 : Remplacer par une fonction normale
Convertir la fermeture en fonction normale en dehors de la méthode _initMailer :
function emailCallback() { return 'ZendMail_' . microtime(true) . '.tmp'; } $callback = "emailCallback";
Solution 2 : Indirect Appel de méthode par variable de tableau
Selon la documentation Zend Mail File Transport, l'option de rappel peut également être définie à l'aide d'une variable de tableau :
$callback = array($this, "aMethodInYourClass");
Cette approche permet de transmettre n'importe quel méthode de la classe actuelle comme rappel.
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!