Linux SRV-16 6.18.44-paas #1 SMP PREEMPT_DYNAMIC Thu Aug 13 10:08:12 UTC 2026 x86_64
/
opt
/
php-8.1.16-202303091609
/
share
/
test
/
mongodb
/
tests
/
bson
/
//opt/php-8.1.16-202303091609/share/test/mongodb/tests/bson/bson-fromPHP_error-001.phpt
--TEST-- MongoDB\BSON\fromPHP(): bsonSerialize() must return an array or stdClass --FILE-- <?php require_once __DIR__ . '/../utils/basic.inc'; class MyDocument implements MongoDB\BSON\Serializable { private $data; public function __construct($data = null) { $this->data = $data; } #[\ReturnTypeWillChange] public function bsonSerialize() { return $this->data; } } $invalidValues = array(null, 123, 'foo', true, new MyDocument); echo "Testing top-level objects\n"; foreach ($invalidValues as $invalidValue) { try { hex_dump(fromPHP(new MyDocument($invalidValue))); } catch (MongoDB\Driver\Exception\UnexpectedValueException $e) { echo $e->getMessage(), "\n"; } } echo "\nTesting nested objects\n"; foreach ($invalidValues as $invalidValue) { try { hex_dump(fromPHP(new MyDocument(array('nested' => new MyDocument($invalidValue))))); } catch (MongoDB\Driver\Exception\UnexpectedValueException $e) { echo $e->getMessage(), "\n"; } } ?> ===DONE=== <?php exit(0); ?> --EXPECTF-- Testing top-level objects Expected MyDocument::bsonSerialize() to return an array or stdClass, %r(null|NULL)%r given Expected MyDocument::bsonSerialize() to return an array or stdClass, int%S given Expected MyDocument::bsonSerialize() to return an array or stdClass, string given Expected MyDocument::bsonSerialize() to return an array or stdClass, bool%S given Expected MyDocument::bsonSerialize() to return an array or stdClass, MyDocument given Testing nested objects Expected MyDocument::bsonSerialize() to return an array or stdClass, %r(null|NULL)%r given Expected MyDocument::bsonSerialize() to return an array or stdClass, int%S given Expected MyDocument::bsonSerialize() to return an array or stdClass, string given Expected MyDocument::bsonSerialize() to return an array or stdClass, bool%S given Expected MyDocument::bsonSerialize() to return an array or stdClass, MyDocument given ===DONE===