MongoDB\BSON\Serializable::bsonSerialize
(mongodb >=1.0.0)
MongoDB\BSON\Serializable::bsonSerialize — Fornece um array ou documento para serializar como BSON
Descrição
Documentos raiz (ex.: um
MongoDB\BSON\Serializable passado para
MongoDB\BSON\Document::fromPHP()) sempre serão
serializados como um documento BSON. Para valores de campos, arrays associativos e
instâncias de stdClass serão serializados como um documento
BSON e arrays sequenciais (isto é, índices numéricos sequenciais iniciando em
0
) serão serializados como um array BSON.
Usuários são encorajados a incluir uma propriedade _id (ex.: um
MongoDB\BSON\ObjectId inicializado no construtor)
ao retornar dados para um documento nativo BSON. Na ausência de uma
propriedade _id, a extensão ou servidor irá gerar um
MongoDB\BSON\ObjectId para operações de inserção ou
atualização, respectivamente.
Parâmetros
Esta função não possui parâmetros.
Exemplos
Exemplo #1 MongoDB\BSON\Serializable::bsonSerialize() retornando um array associativo para documento raiz
<?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";
?>
O exemplo acima produzirá
algo semelhante a:
{ "_id" : { "$oid" : "56cccdcada14d8755a58c591" }, "foo" : "bar" }
Exemplo #2 MongoDB\BSON\Serializable::bsonSerialize() retornando um array sequencial para documento raiz
<?php
class MyArray implements MongoDB\BSON\Serializable
{
function bsonSerialize(): array
{
return [1, 2, 3];
}
}
echo MongoDB\BSON\Document::fromPHP(new MyArray)->toRelaxedExtendedJSON(), "\n";
?>
O exemplo acima produzirá:
{ "0" : 1, "1" : 2, "2" : 3 }
Exemplo #3 MongoDB\BSON\Serializable::bsonSerialize() retornando um array associativo para campo de documento
<?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";
?>
O exemplo acima produzirá:
{ "document" : { "foo" : "bar" } }
Exemplo #4 MongoDB\BSON\Serializable::bsonSerialize() retornando um array sequencial para campo de documento
<?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";
?>
O exemplo acima produzirá:
{ "array" : [ 1, 2, 3 ] }