(mongodb >=1.0.0)
MongoDB\BSON\Serializable::bsonSerialize — Proporciona un array o un documento a serializar como BSON
Invocado durante la serialización del objeto a BSON. El método debe devolver un tableau, 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 serán 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, índices numéricos secuenciales
comenzando en 0
) serán serializados como array BSON.
Se recomienda 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 las operaciones de inserción o actualización, respectivamente.
Esta función no tiene parámetros.
tableau, stdClass, MongoDB\BSON\Document, o MongoDB\BSON\PackedArray a serializar como array o documento BSON.
Versión | Descripción |
---|---|
PECL mongodb 2.0.0 | Return types previously declared as tentative are now enforced. |
PECL mongodb 1.17.0 |
El tipo de retorno ya no es array|object. En lugar de un object, el tipo de retorno especifica ahora stdClass. Las clases que implementan esta interfaz deben ser modificadas para no utilizar el tipo de retorno object. Al ser el tipo de retorno provisional, se emite una advertencia de deprecación en PHP 8.1 o superior si las implementaciones no utilizan el tipo de retorno correcto. Además de los cambios anteriores, la extensión ahora soporta devolver instancias de MongoDB\BSON\Document y MongoDB\BSON\PackedArray. Cabe señalar que cualquier instancia de MongoDB\BSON\PackedArray será convertida silenciosamente en objeto cuando se almacene como documento raíz. Estas instancias se almacenan como arrays cuando se utilizan como valor de campo integrado. |
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 ] }