(mongodb >=1.0.0)
MongoDB\BSON\Serializable::bsonSerialize — Proporciona un array o un documento para ser serializado como BSON
Llamado 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()) 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.
Esta función no tiene parámetros.
array, stdClass, MongoDB\BSON\Document, or MongoDB\BSON\PackedArray a ser serializado como array o documento BSON.
Versión | Descripción |
---|---|
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 dejar de usar el tipo de retorno object. Al ser el tipo de retorno previsible, se emite un aviso de deprecación en PHP 8.1 o posterior si las implementaciones no usan 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. Tenga en cuenta que cualquier instancia de MongoDB\BSON\PackedArray será silenciosamente convertida 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 ] }