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 ?

Comment résoudre l'exception « La sérialisation de la fermeture n'est pas autorisée » dans les tests Zend Mailer ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-24 02:36:02467parcourir

How to Resolve

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn