Ausnahme: Serialisierung von „Closure“ ist nicht zulässig
Beim Ausführen von Tests, die Abschlussfunktionen in der _initMailer-Methode von Zend beinhalten, können Entwickler auf Folgendes stoßen: Folgende Ausnahme: Ausnahme: Serialisierung von „Closure“ ist nicht zulässig.
Dieser Fehler tritt auf, weil anonyme Funktionen aufgrund ihrer dynamischen Natur nicht serialisiert werden können. Im bereitgestellten Code ist der Abschluss innerhalb der _initMailer-Methode definiert:
$callback = function() { return 'ZendMail_' . microtime(true) .'.tmp'; };
Lösung:
Es gibt zwei praktikable Lösungen für dieses Problem:
Lösung 1: Durch eine normale Funktion ersetzen
Konvertieren Sie den Abschluss in eine normale Funktion außerhalb der _initMailer-Methode:
function emailCallback() { return 'ZendMail_' . microtime(true) . '.tmp'; } $callback = "emailCallback";
Lösung 2: Indirekt Methodenaufruf durch Array-Variable
Gemäß der Zend Mail File Transport-Dokumentation kann die Rückrufoption auch mithilfe einer Array-Variablen festgelegt werden:
$callback = array($this, "aMethodInYourClass");
Dieser Ansatz ermöglicht die Übergabe beliebiger Methode aus der aktuellen Klasse als Callback.
Das obige ist der detaillierte Inhalt vonWie löst man die Ausnahme „Serialisierung von „Schließung ist nicht zulässig'' in Zend Mail-Unit-Tests?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!