Maison  >  Article  >  développement back-end  >  Comment résoudre les exceptions de sérialisation avec des fermetures dans Zend Mail Transport ?

Comment résoudre les exceptions de sérialisation avec des fermetures dans Zend Mail Transport ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-24 02:29:29728parcourir

How to Resolve Serialization Exceptions with Closures in 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!

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