Generates a compact, storable binary representation of a value

- « Igbinary Functions

- igbinary_unserialize »

- PHP Manual
- Igbinary Functions
- Generates a compact, storable binary representation of a value

# igbinary_serialize

(PECL igbinary >= 1.1.1)

igbinary_serialize — Generates a compact, storable binary representation of a value

### Description

igbinary_serialize(mixed `$value`): string|false

Generates a storable representation of a value.

This is useful for storing or passing PHP values around without losing their type and structure.

To make the serialized string into a PHP value again, igbinary_unserialize() can be used.

### Parameters

`value`

  The value to be serialized. igbinary_serialize() handles all types, except the resource-type and some objects (see note below). Even arrays that contain references to itself can be processed by igbinary_serialize(). Circular references inside the array or object that is being serializend will also be stored. Any other reference will be lost.

  When serializing objects, igbinary will attempt to call the member functions __serialize() or __sleep() prior to serialization. This is to allow the object to do any last minute clean-up, etc. prior to being serialized. Likewise, when the object is restored using igbinary_unserialize() the __unserialize() or __wakeup() member function is called.

  > Note:

  > Private members of objects have the class name prepended to the member name; protected members have a `'*'` prepended to the member name. These prepended values have null bytes on either side.

### Return Values

Returns a string containing a byte-stream representation of `value` that can be stored anywhere.

Note that this is a binary string which can include any byte value, and needs to be stored and handled as such. For example, igbinary_serialize() output should generally be stored in a `BLOB` field in a database, rather than a `CHAR` or `TEXT` field.

### Examples

Example #1 igbinary_serialize() example

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

The above example will output:

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

### Notes

> Note:

> Note that many built-in PHP objects cannot be serialized. However, those with this ability either implement the Serializable interface or the magic __serialize()/__unserialize() or __sleep()/__wakeup() methods. If an internal class does not fulfill any of those requirements, it cannot reliably be serialized with any serializer.

> There are some historical exceptions to the above rule, where some internal objects could be serialized without implementing the interface or exposing the methods.

### See Also

- serialize() - Generates a storable representation of a value
- igbinary_unserialize() - Creates a PHP value from a stored representation from igbinary_serialize
- var_export() - Outputs or returns a parsable string representation of a variable
- json_encode() - Returns the JSON representation of a value
- Serializing Objects
- __sleep()
- __wakeup()
- __serialize()
- __unserialize()