PHP 8.5.0 Alpha 2 available for testing

MongoDB\BSON\Serializable::bsonSerialize

(mongodb >=1.0.0)

MongoDB\BSON\Serializable::bsonSerializeProporciona un array o un documento a serializar como BSON

Descripción

abstract public MongoDB\BSON\Serializable::bsonSerialize(): array|stdClass|MongoDB\BSON\Document|MongoDB\BSON\PackedArray

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.

Parámetros

Esta función no contiene ningún parámetro.

Valores devueltos

array, stdClass, MongoDB\BSON\Document, o MongoDB\BSON\PackedArray a serializar como array o documento BSON.

Historial de cambios

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.

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";

?>

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 ] }

Ver también

add a note

User Contributed Notes 1 note

up
0
Anonymous
9 years ago
This documentation seems to be obsolete because I tried the first example and it doesn't convert the objectId to a string.

This seems to be more current documentation but I can't figure out how to get bson to json

http://mongodb.github.io/mongo-php-library/api/source-class-MongoDB.Model.BSONDocument.html#48-57
To Top