Heim >Backend-Entwicklung >PHP-Tutorial >Wie löst man Serialisierungsausnahmen mit Schließungen in Zend Mail Transport?
Serialisierungsausnahme bei Abschlüssen
Problem:
Bei der Verwendung von Abschlüssen in der _initMailer-Methode Tests schlagen fehl mit der Ausnahme: „Serialisierung von ‚Closure‘ ist nicht zulässig.“
Ursache:
Anonyme Funktionen können nicht serialisiert werden. Im bereitgestellten Code wird ein Abschluss als Rückrufparameter für den Zend_Mail_Transport_File-Transport verwendet.
Lösung 1: Ersetzen Sie den Abschluss durch eine reguläre Funktion
Ersetzen Sie den Abschluss durch a reguläre Funktion, die außerhalb der _initMailer-Methode definiert ist. Zum Beispiel:
<code class="php">function emailCallback() { return 'ZendMail_' . microtime(true) . '.tmp'; } $callback = "emailCallback";</code>
Lösung 2: Indirekten Methodenaufruf über Array-Variable verwenden
Alternativ können Sie eine Array-Variable verwenden, um eine Methode in Ihrer Klasse indirekt aufzurufen als Rückruf. Weitere Informationen finden Sie in der Zend Mail-Dokumentation:
<code class="php">$callback = array($this, "aMethodInYourClass");</code>
Das obige ist der detaillierte Inhalt vonWie löst man Serialisierungsausnahmen mit Schließungen in Zend Mail Transport?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!