Page MenuHomePhabricator (Chris)

bson-document-toPHP-009.phpt
No OneTemporary

Authored By
Unknown
Size
2 KB
Referenced Files
None
Subscribers
None

bson-document-toPHP-009.phpt

--TEST--
MongoDB\BSON\Document::toPHP(): Setting fieldPath typemaps for compound types with numerical keys
--FILE--
<?php
require_once __DIR__ . "/../utils/basic.inc";
class MyArrayObject extends ArrayObject implements MongoDB\BSON\Unserializable
{
function bsonUnserialize(array $data): void
{
parent::__construct($data, ArrayObject::ARRAY_AS_PROPS);
}
}
$bson = \MongoDB\BSON\Document::fromPHP( [
'_id' => 1,
'array0' => [0 => [ 4, 5, 6 ], 1 => [ 7, 8, 9 ]],
'array1' => [1 => [ 4, 5, 6 ], 2 => [ 7, 8, 9 ]],
] );
function fetch($bson, $typeMap = []) {
return $bson->toPHP($typeMap);
}
echo "Default\n";
$document = fetch($bson);
var_dump($document instanceof stdClass);
var_dump(is_array($document->array0));
var_dump(is_object($document->array1));
var_dump($document->array1 instanceof stdClass);
echo "\nSetting 'array0' path to 'MyArrayObject'\n";
$document = fetch($bson, ["fieldPaths" => [
'array0' => "MyArrayObject"
]]);
var_dump($document instanceof stdClass);
var_dump(is_object($document->array0));
var_dump($document->array0 instanceof MyArrayObject);
echo "\nSetting 'array0.1' path to 'MyArrayObject'\n";
$document = fetch($bson, ["fieldPaths" => [
'array0.1' => "MyArrayObject",
]]);
var_dump($document instanceof stdClass);
var_dump(is_array($document->array0));
var_dump(is_array($document->array0[0]));
var_dump($document->array0[1] instanceof MyArrayObject);
echo "\nSetting 'array1.1' path to 'MyArrayObject'\n";
$document = fetch($bson, ["fieldPaths" => [
'array1.1' => "MyArrayObject",
]]);
var_dump($document instanceof stdClass);
var_dump(is_object($document->array1));
var_dump($document->array1 instanceof stdClass);
$a = ((array) $document->array1);
var_dump($a[1] instanceof MyArrayObject);
var_dump(is_array($a[2]));
?>
===DONE===
<?php exit(0); ?>
--EXPECT--
Default
bool(true)
bool(true)
bool(true)
bool(true)
Setting 'array0' path to 'MyArrayObject'
bool(true)
bool(true)
bool(true)
Setting 'array0.1' path to 'MyArrayObject'
bool(true)
bool(true)
bool(true)
bool(true)
Setting 'array1.1' path to 'MyArrayObject'
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
===DONE===

File Metadata

Mime Type
text/plain
Expires
Sun, Nov 15, 3:09 PM (7 h, 23 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
152422
Default Alt Text
bson-document-toPHP-009.phpt (2 KB)

Event Timeline