Php/docs/mongodb-bson-serializable.bsonserialize

From Get docs

MongoDB\BSON\Serializable::bsonSerialize

(mongodb >=1.0.0)

MongoDB\BSON\Serializable::bsonSerializeProvides an array or document to serialize as BSON


Description

abstract public MongoDB\BSON\Serializable::bsonSerialize ( ) : array|object

Called during serialization of the object to BSON. The method must return an array or stdClass.

Root documents (e.g. a MongoDB\BSON\Serializable passed to MongoDB\BSON\fromPHP()) will always be serialized as a BSON document. For field values, associative arrays and stdClass instances will be serialized as a BSON document and sequential arrays (i.e. sequential, numeric indexes starting at 0) will be serialized as a BSON array.

Users are encouraged to include an _id property (e.g. a MongoDB\BSON\ObjectId initialized in your constructor) when returning data for a BSON root document; otherwise, the driver or database will need to generate a MongoDB\BSON\ObjectId when inserting or upserting the document, respectively.


Parameters

This function has no parameters.


Return Values

An array or stdClass to be serialized as a BSON array or document.


Examples

Example #1 MongoDB\BSON\Serializable::bsonSerialize() returning an associative array for root document

<?phpclass MyDocument implements MongoDB\BSON\Serializable{    private $id;    function __construct()    {        $this->id = new MongoDB\BSON\ObjectId;    }    function bsonSerialize()    {        return ['_id' => $this->id, 'foo' => 'bar'];    }}$bson = MongoDB\BSON\fromPHP(new MyDocument);echo MongoDB\BSON\toJSON($bson), "\n";?>

The above example will output something similar to:


{ "_id" : { "$oid" : "56cccdcada14d8755a58c591" }, "foo" : "bar" }

Example #2 MongoDB\BSON\Serializable::bsonSerialize() returning a sequential array for root document

<?phpclass MyArray implements MongoDB\BSON\Serializable{    function bsonSerialize()    {        return [1, 2, 3];    }}$bson = MongoDB\BSON\fromPHP(new MyArray);echo MongoDB\BSON\toJSON($bson), "\n";?>

The above example will output:


{ "0" : 1, "1" : 2, "2" : 3 }

Example #3 MongoDB\BSON\Serializable::bsonSerialize() returning an associative array for document field

<?phpclass MyDocument implements MongoDB\BSON\Serializable{    function bsonSerialize()    {        return ['foo' => 'bar'];    }}$value = ['document' => new MyDocument];$bson = MongoDB\BSON\fromPHP($value);echo MongoDB\BSON\toJSON($bson), "\n";?>

The above example will output:


{ "document" : { "foo" : "bar" } }

Example #4 MongoDB\BSON\Serializable::bsonSerialize() returning a sequential array for document field

<?phpclass MyArray implements MongoDB\BSON\Serializable{    function bsonSerialize()    {        return [1, 2, 3];    }}$value = ['array' => new MyArray];$bson = MongoDB\BSON\fromPHP($value);echo MongoDB\BSON\toJSON($bson), "\n";?>

The above example will output:


{ "array" : [ 1, 2, 3 ] }

See Also