MongoDB\BSON\Serializable::bsonSerialize
(mongodb >=1.0.0)
MongoDB\BSON\Serializable::bsonSerialize — Proporciona un array o un documento para ser serializado como BSON
Descripción
Los documentos raíz (por ejemplo, un
MongoDB\BSON\Serializable pasado a
MongoDB\BSON\Document::fromPHP()) serán siempre serializados como
documento BSON. Para los valores de campo, los arrays asociativos y las
instancias stdClass serán serializados como
documento BSON y los arrays secuenciales (es decir, los índices numéricos
secuenciales comenzando en 0
) serán serializados como
array BSON.
Se recomienda a los usuarios incluir una propiedad _id
(por ejemplo, un MongoDB\BSON\ObjectId inicializado en el constructor)
al devolver los 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 las operaciones de inserción o
actualización, respectivamente.
Parámetros
Esta función no tiene parámetros.
Ejemplos
Ejemplo #1 MongoDB\BSON\Serializable::bsonSerialize() devolviendo un array asociativo para el 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";
?>
El resultado del ejemplo
sería algo similar a:
{ "_id" : { "$oid" : "56cccdcada14d8755a58c591" }, "foo" : "bar" }
Ejemplo #2 MongoDB\BSON\Serializable::bsonSerialize() devolviendo un array secuencial para el 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 resultado del ejemplo sería:
{ "0" : 1, "1" : 2, "2" : 3 }
Ejemplo #3 MongoDB\BSON\Serializable::bsonSerialize() devolviendo un array asociativo para el 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 resultado del ejemplo sería:
{ "document" : { "foo" : "bar" } }
Ejemplo #4 MongoDB\BSON\Serializable::bsonSerialize() devolviendo un array secuencial para el campo de documento
<?php
class MyArray implements MongoDB\BSON\Serializable
{
function bsonSerialize(): array
{
return [1, 2, 3];
}
}
$value = ['array' => new MyArray];
$bson = MongoDB\BSON\fromPHP($value);
echo MongoDB\BSON\toJSON($bson), "\n";
?>
El resultado del ejemplo sería:
{ "array" : [ 1, 2, 3 ] }