MongoDB\BSON\Serializable::bsonSerialize
  (mongodb >=1.0.0)
MongoDB\BSON\Serializable::bsonSerialize — Сериализует данные как BSON-массив или BSON-документ
  
 
  Описание
  
  
  
   Корневые документы наподобие объектов класса, который реализует
   интерфейс MongoDB\BSON\Serializable и который передали
   в метод MongoDB\BSON\Document::fromPHP(), сериализуются
   как BSON-документ. Для значений полей ассоциативные массивы
   и экземпляры класса stdClass метод сериализует как BSON-документ,
   а последовательные массивы — массивы с последовательными числовыми индексами, которые начинаются
   с 0 — как BSON-массив.
  
  
   При возврате данных для корневого BSON-документа
   пользователям рекомендуют включать в данные возврата свойство _id.
   Часто идентификатор инициализируют в конструкторе при инициализации объекта
   MongoDB\BSON\ObjectId, который включают в данные возврата как значение идентификатора.
   В отсутствие свойства _id модуль сгенерирует
   значение MongoDB\BSON\ObjectId для операций вставки,
   а сервер для операций обновления или вставки.
  
  
 
  Список параметров
  
 Сигнатура функции не содержит параметров.
  
 
 
 
  Примеры
  
   Пример #1 
    Пример возврата методом MongoDB\BSON\Serializable::bsonSerialize()
    ассоциативного массива для корневого документа
   
   
<?php
class MyDocument implements MongoDB\BSON\Serializable
{
    private $id;
    function __construct()
    {
        $this->id = new MongoDB\BSON\ObjectId;
    }
    function bsonSerialize(): array
    {
        return ['_id' => $this->id, 'foo' => 'bar'];
    }
}
echo MongoDB\BSON\Document::fromPHP(new MyDocument())->toRelaxedExtendedJSON(), "\n";
?>
    
   
 Вывод приведённого примера будет похож на:
{ "_id" : { "$oid" : "56cccdcada14d8755a58c591" }, "foo" : "bar" }
 
   
  
   Пример #2 
    Пример возврата методом MongoDB\BSON\Serializable::bsonSerialize()
    последовательного массива для корневого документа
   
   
<?php
class MyArray implements MongoDB\BSON\Serializable
{
    function bsonSerialize(): array
    {
        return [1, 2, 3];
    }
}
echo MongoDB\BSON\Document::fromPHP(new MyArray())->toRelaxedExtendedJSON(), "\n";
?>
    
   
 Результат выполнения приведённого примера:
{ "0" : 1, "1" : 2, "2" : 3 }
 
   
  
   Пример #3 
    Пример возврата методом MongoDB\BSON\Serializable::bsonSerialize()
    ассоциативного массива для поля документа
   
   
<?php
class MyDocument implements MongoDB\BSON\Serializable
{
    function bsonSerialize(): array
    {
        return ['foo' => 'bar'];
    }
}
$value = ['document' => new MyDocument];
echo MongoDB\BSON\Document::fromPHP($value)->toRelaxedExtendedJSON(), "\n";
?>
    
   
 Результат выполнения приведённого примера:
{ "document" : { "foo" : "bar" } }
 
   
  
   Пример #4 
    Пример возврата методом MongoDB\BSON\Serializable::bsonSerialize()
    последовательного массива для поля документа
   
   
<?php
class MyArray implements MongoDB\BSON\Serializable
{
    function bsonSerialize(): array
    {
        return [1, 2, 3];
    }
}
$value = ['array' => new MyArray];
echo MongoDB\BSON\Document::fromPHP($value)->toRelaxedExtendedJSON(), "\n";
?>
    
   
 Результат выполнения приведённого примера:
{ "array" : [ 1, 2, 3 ] }