(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 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 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 contiene ningún parámetro.
array, stdClass, MongoDB\BSON\Document, o MongoDB\BSON\PackedArray a serializar como array o documento BSON.
| Versión | Descripción |
|---|---|
| PECL mongodb 2.0.0 | Los tipos de retorno previamente declarados como provisionales ahora son aplicados. |
| 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";
?>Resultado del ejemplo anterior es 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 ejemplo anterior mostrará :
{ "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 ejemplo anterior mostrará :
{ "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 ejemplo anterior mostrará :
{ "array" : [ 1, 2, 3 ] }