MongoDB\BSON\Serializable::bsonSerialize
(mongodb >=1.0.0)
MongoDB\BSON\Serializable::bsonSerialize — Proporciona un array o documento para serializar como BSON
Descripción
Se invoca durante la serialización del objeto a BSON. El método debe devolver un
array, stdClass, MongoDB\BSON\Document,
o MongoDB\BSON\PackedArray.
Los documentos raíz (por ejemplo, un
MongoDB\BSON\Serializable pasado a
MongoDB\BSON\Document::fromPHP()) siempre se
serializarán como un documento BSON. Para los valores de campo, los arrays
asociativos y las instancias de stdClass se
serializarán como un documento BSON y los arrays secuenciales (es decir,
índices numéricos secuenciales que comienzan en 0)
se serializarán como un array BSON.
Se recomienda a los usuarios incluir una propiedad _id
(por ejemplo, un MongoDB\BSON\ObjectId inicializado en
el constructor) al devolver datos para un documento raíz BSON. En ausencia de
una propiedad _id, la extensión o el servidor generará un
MongoDB\BSON\ObjectId para operaciones de inserción o
actualización (upsert), respectivamente.
Parámetros
Esta función no contiene ningún parámetro.
Ejemplos
Ejemplo #1 MongoDB\BSON\Serializable::bsonSerialize() que devuelve un array asociativo para documento raíz
<?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";
?>
Resultado del ejemplo anterior es similar a:
{ "_id" : { "$oid" : "56cccdcada14d8755a58c591" }, "foo" : "bar" }
Ejemplo #2 MongoDB\BSON\Serializable::bsonSerialize() que devuelve un array secuencial para documento raíz
<?php
class MyArray implements MongoDB\BSON\Serializable
{
function bsonSerialize(): array
{
return [1, 2, 3];
}
}
echo MongoDB\BSON\Document::fromPHP(new MyArray)->toRelaxedExtendedJSON(), "\n";
?>
El ejemplo anterior mostrará:
{ "0" : 1, "1" : 2, "2" : 3 }
Ejemplo #3 MongoDB\BSON\Serializable::bsonSerialize() que devuelve un array asociativo 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";
?>
El ejemplo anterior mostrará:
{ "document" : { "foo" : "bar" } }
Ejemplo #4 MongoDB\BSON\Serializable::bsonSerialize() que devuelve un array secuencial 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";
?>
El ejemplo anterior mostrará:
{ "array" : [ 1, 2, 3 ] }