在撰寫此筆記時 (PHP 5.3.1) 不允許序列化閉包。
這表示像以下這樣的程式碼
<?php
$bar3 = function($a) {
return $a * 2;
};
wincache_ucache_set('foo3', $bar3);
var_dump(wincache_ucache_get('foo3'));
echo "<br>";
?>
會拋出例外
[11-Feb-2010 09:25:33] PHP Fatal error: 未捕捉的例外 'Exception',訊息為 'Serialization of 'Closure' is not allowed' 位於 C:\inetpub\wwwroot\phptest\tests\ucache\wincache15.php:6
堆疊追蹤
#0 C:\inetpub\wwwroot\phptest\tests\ucache\wincache15.php(6): wincache_ucache_set('foo3', Object(Closure))
#1 {main}
拋出於 C:\inetpub\wwwroot\phptest\tests\ucache\wincache15.php 的第 6 行
然而,可以像這樣捕捉這個例外
<?php
$bar3 = function($a) {
return $a * 2;
};
try
{
wincache_ucache_set('foo3', $bar3);
}
catch (Exception $e)
{
var_dump($e->getMessage());
}
var_dump(wincache_ucache_get('foo3'));
echo "<br>";
?>
這將產生如下所示的輸出
string(41) "Serialization of 'Closure' is not allowed" NULL