Maison > développement back-end > tutoriel php > Comment résoudre l'erreur « Exception : la sérialisation de « Closure » ​​n'est pas autorisée » lors de l'utilisation de fermetures dans les méthodes de test ?

Comment résoudre l'erreur « Exception : la sérialisation de « Closure » ​​n'est pas autorisée » lors de l'utilisation de fermetures dans les méthodes de test ?

Susan Sarandon
Libérer: 2024-10-24 01:28:02
original
598 Les gens l'ont consulté

How to Resolve

Exception : la sérialisation de « Closure » ​​n'est pas autorisée

Lors de la tentative d'utilisation de fermetures dans les méthodes de test, une « Exception : sérialisation de » Une erreur "La fermeture n'est pas autorisée" peut se produire.

Problème

Le fragment de code ci-dessous utilise une fermeture pour spécifier un chemin de fichier personnalisé pour stocker les e-mails :

<code class="php">protected function _initMailer() {
    ...
    elseif ('testing' === APPLICATION_ENV) {
        // ...
        $callback = function()
        {
            return 'ZendMail_' . microtime(true) .'.tmp';
        };
        // ...
    }</code>
Copier après la connexion

Résolution

Solution 1 : Remplacer la fermeture par une fonction régulière

Remplacer la fermeture par une fonction régulière :

<code class="php">protected function _initMailer() {
    ...
    elseif ('testing' === APPLICATION_ENV) {
        // ...
        function emailCallback() {
            return 'ZendMail_' . microtime(true) . '.tmp';
        }
        $callback = "emailCallback";
        // ...
    }</code>
Copier après la connexion

Solution 2 : Utiliser une variable de tableau pour l'appel de méthode indirect

Utiliser une variable de tableau pour appeler une méthode indirectement :

<code class="php">protected function _initMailer() {
    ...
    elseif ('testing' === APPLICATION_ENV) {
        // ...
        $callback = array($this, "aMethodInYourClass");
        // ...
    }</code>
Copier après la connexion

Cela vous permet de définissez la méthode dans la classe et transmettez-la au rappel à l'aide d'un tableau.

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal