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

<?php

class 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

<?php

class MyArray implements MongoDB\BSON\Serializable
{
    function 
bsonSerialize()
    {
        return [
123];
    }
}

$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

<?php

class 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

<?php

class MyArray implements MongoDB\BSON\Serializable
{
    function 
bsonSerialize()
    {
        return [
123];
    }
}

$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

Here you can write a comment


Please enter at least 10 characters.
Loading... Please wait.
* Pflichtangabe
There are no comments available yet.

PHP cURL Tutorial: Using cURL to Make HTTP Requests

cURL is a powerful PHP extension that allows you to communicate with different servers using various protocols, including HTTP, HTTPS, FTP, and more. ...

TheMax

Autor : TheMax
Category: PHP-Tutorials

Midjourney Tutorial - Instructions for beginners

There is an informative video about Midjourney, the tool for creating digital images using artificial intelligence, entitled "Midjourney tutorial in German - instructions for beginners" ...

Mike94

Autor : Mike94
Category: KI Tutorials

Basics of views in MySQL

Views in a MySQL database offer the option of creating a virtual table based on the result of an SQL query. This virtual table can be queried like a normal table without changing the underlying data. ...

admin

Autor : admin
Category: mySQL-Tutorials

Publish a tutorial

Share your knowledge with other developers worldwide

Share your knowledge with other developers worldwide

You are a professional in your field and want to share your knowledge, then sign up now and share it with our PHP community

learn more

Publish a tutorial