异常:不允许序列化“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中文网其他相关文章!