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
435 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!

source:php
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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!