異常:不允許序列化「Closure」
當運行利用_initMailer() 方法的測試時,該方法設定Zend在在應用程式的initMailer 中,遇到以下異常:
Exception: Serialization of 'Closure' is not allowed
該異常是由方法內的匿名函數(閉包)引起的:
$callback = function () { return 'ZendMail_' . microtime(true) .'.tmp'; };
匿名函數無法序列化,導致
解決方案1:用常規函數替換閉包
用常規函數取代匿名函數:
function emailCallback() { return 'ZendMail_' . microtime(true) . '.tmp'; } $callback = "emailCallback" ;
解方案2:使用陣列變數間接呼叫方法
或者,您可以使用陣列變數來間接呼叫方法:
$callback = array($this, "aMethodInYourClass");
這允許您指定一個方法來自類別實例,沒有序列化問題。
以上是如何解決 Zend Mailer 測試中的「不允許序列化『關閉』」異常?的詳細內容。更多資訊請關注PHP中文網其他相關文章!