php[world] 2019 — 25 years of PHP

MongoDB\BSON\Serializable::bsonSerialize

(mongodb >=1.0.0)

MongoDB\BSON\Serializable::bsonSerializeПредоставляет массив или документ для сериализации в BSON

Описание

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

Вызывается во время сериализации объекта в BSON. Метод должен возвращать array или stdClass.

Корневые документы (например, MongoDB\BSON\Serializable, переданные в MongoDB\BSON\fromPHP()) всегда будут сериализованы, как документ BSON. Для значений полей ассоциативные массивы и экземпляры stdClass будут сериализованы в виде документа BSON, а последовательные массивы (например, последовательные числовые индексы, начинающиеся с 0) будут сериализованы в виде массива BSON.

Пользователям рекомендуется включать свойство _id (например, MongoDB\BSON\ObjectId, инициализированный в вашем конструкторе) при возврате данных для корневого документа BSON; в противном случае драйвер или база данных должны будут сгенерировать MongoDB\BSON\ObjectId при вставке или слиянии документа, соответственно.

Список параметров

У этой функции нет параметров.

Возвращаемые значения

array или stdClass для сериализации в виде массива или документа BSON.

Примеры

Пример #1 MongoDB\BSON\Serializable::bsonSerialize() возвращение ассоциативного массива для корневого документа

<?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";

?>

Результатом выполнения данного примера будет что-то подобное:

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

Пример #2 MongoDB\BSON\Serializable::bsonSerialize() возвращение последовательного массива для корневого документа

<?php

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

$bson MongoDB\BSON\fromPHP(new MyArray);
echo 
MongoDB\BSON\toJSON($bson), "\n";

?>

Результат выполнения данного примера:

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

Пример #3 MongoDB\BSON\Serializable::bsonSerialize() возвращение ассоциативного массива для поля документа

<?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";

?>

Результат выполнения данного примера:

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

Пример #4 MongoDB\BSON\Serializable::bsonSerialize() возвращение последовательного массива для поля документа

<?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";

?>

Результат выполнения данного примера:

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

Смотрите также

add a note add a note

User Contributed Notes 1 note

up
-1
Anonymous
3 years ago
This documentation seems to be obsolete because I tried the first example and it doesn't convert the objectId to a string.

This seems to be more current documentation but I can't figure out how to get bson to json

http://mongodb.github.io/mongo-php-library/api/source-class-MongoDB.Model.BSONDocument.html#48-57
To Top