【发布时间】:2011-08-12 02:49:47
【问题描述】:
我正在寻找一种优雅的方法来测试变量是否可序列化。例如array( function() {} ) 将无法序列化。
我目前正在使用下面的代码,但这似乎是一种相当不理想的方法。
function isSerializable( $var )
{
try {
serialize( $var );
return TRUE;
} catch( Exception $e ) {
return FALSE;
}
}
var_dump( isSerializable( array() ) ); // bool(true)
var_dump( isSerializable( function() {} ) ); // bool(false)
var_dump( isSerializable( array( function() {} ) ) ); // bool(false)
【问题讨论】:
-
这是一个很好的方法:)
-
是的,我同意亚历克斯的观点,这看起来很好。您是否担心尝试序列化的开销?
-
我认为这是最好的方式,其他方式不存在:)
-
好吧,我正在尝试编写一个函数,该函数将允许对普通可序列化变量 + 闭包进行序列化(使用 this)。所以我试图通过使用函数
isSerializable“遍历”变量来遍历对象树,寻找可能存在的闭包(并防止序列化)。如果我必须尝试在每个点进行深度序列化,这可能会非常慢。 -
为什么不让函数返回序列化对象或false?然后你已经序列化了你的数据。 Sry 没有阅读您链接到的代码。
标签: php serialization closures