Exception: Serialization of 'Closure' is Not allowed
在 Zend 的 _initMailer 方法中执行涉及闭包函数的测试时,开发人员可能会遇到以下异常:异常:不允许序列化'Closure'。
出现此错误是因为匿名函数由于其动态性质而无法序列化。在提供的代码中,闭包是在 _initMailer 方法中定义的:
$callback = function() { return 'ZendMail_' . microtime(true) .'.tmp'; };
解决方案:
此问题有两种可行的解决方案:
解决方案 1:替换为普通函数
将闭包转换为 _initMailer 方法之外的普通函数:
function emailCallback() { return 'ZendMail_' . microtime(true) . '.tmp'; } $callback = "emailCallback";
解决方案 2:间接通过数组变量调用方法
根据 Zend Mail 文件传输文档,还可以使用数组变量设置回调选项:
$callback = array($this, "aMethodInYourClass");
这种方法允许传递任何当前类中的方法作为回调。
以上是如何解决 Zend Mail 单元测试中的'不允许序列化'关闭'”异常?的详细内容。更多信息请关注PHP中文网其他相关文章!