(mongodb >=1.0.0)
MongoDB\BSON\Serializable::bsonSerialize — Предоставляет массив или документ для сериализации в BSON
Вызывается во время сериализации объекта в 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 [1, 2, 3];
}
}
$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 [1, 2, 3];
}
}
$value = ['array' => new MyArray];
$bson = MongoDB\BSON\fromPHP($value);
echo MongoDB\BSON\toJSON($bson), "\n";
?>
Результат выполнения данного примера:
{ "array" : [ 1, 2, 3 ] }