igbinary_serialize

(PECL igbinary >= 1.1.1)

igbinary_serialize生成值的紧凑可存储二进制表示

描述

igbinary_serialize(混合 $value): 字符串|false

生成值的可存储表示。

这对于在不丢失其类型和结构的情况下存储或传递 PHP 值非常有用。

要将序列化字符串恢复为 PHP 值,可以使用 igbinary_unserialize()

参数

value

要序列化的值。 igbinary_serialize() 处理所有类型,除了 资源 类型和一些 对象 (见下文注释)。 即使是包含自身引用的 数组 也可以由 igbinary_serialize() 处理。 被序列化 数组对象 内部的循环引用也将被存储。 任何其他引用将丢失。

序列化对象时,igbinary 将尝试在序列化之前调用成员函数 __serialize()__sleep()。 这是为了允许对象在序列化之前进行任何最后一刻的清理等操作。 同样,当对象使用 igbinary_unserialize() 恢复时,将调用 __unserialize()__wakeup() 成员函数。

注意:

对象 的私有成员在成员名称前附加类名;受保护的成员在成员名称前附加 '*'。 这些附加的值在两侧都有空字节。

返回值

返回一个字符串,包含 value 的字节流表示,可以存储在任何地方。

请注意,这是一个二进制字符串,可以包含任何字节值,需要以这种方式存储和处理。 例如,igbinary_serialize() 输出通常应该存储在数据库中的 BLOB 字段中,而不是 CHARTEXT 字段中。

示例

示例 #1 igbinary_serialize() 示例

<?php
$ser
= igbinary_serialize(['test', 'test']);
echo
urlencode($ser), "\n";
var_export(igbinary_unserialize($ser));
?>

上面的示例将输出

%00%00%00%02%14%02%06%00%11%04test%06%01%0E%00
array (
  0 => 'test',
  1 => 'test',
)

注释

注意:

请注意,许多内置 PHP 对象无法序列化。 但是,具有此能力的对象要么实现了 Serializable 接口,要么实现了魔术 __serialize()/__unserialize()__sleep()/__wakeup() 方法。 如果内部类不满足任何这些要求,则无法使用任何序列化器可靠地对其进行序列化。

在上述规则中,有一些历史上的例外,其中一些内部对象可以在没有实现接口或公开方法的情况下进行序列化。

另见

添加注释

用户贡献注释

此页面没有用户贡献的注释。
To Top