1--TEST-- 2PHPC-1006: Do not modify memory of Persistable::bsonSerialize() return value 3--FILE-- 4<?php 5 6require_once __DIR__ . '/../utils/tools.php'; 7 8class MyClass implements MongoDB\BSON\Persistable 9{ 10 public $data; 11 12 public function __construct() 13 { 14 $this->data = [ 15 '__pclass' => 'baz', 16 'foo' => 'bar', 17 ]; 18 } 19 20 function bsonSerialize() 21 { 22 return $this->data; 23 } 24 25 function bsonUnserialize(array $data) 26 { 27 } 28} 29 30$obj = new MyClass; 31var_dump($obj->data); 32hex_dump(fromPHP($obj)); 33var_dump($obj->data); 34 35?> 36===DONE=== 37<?php exit(0); ?> 38--EXPECT-- 39array(2) { 40 ["__pclass"]=> 41 string(3) "baz" 42 ["foo"]=> 43 string(3) "bar" 44} 45 0 : 28 00 00 00 05 5f 5f 70 63 6c 61 73 73 00 07 00 [(....__pclass...] 46 10 : 00 00 80 4d 79 43 6c 61 73 73 02 66 6f 6f 00 04 [...MyClass.foo..] 47 20 : 00 00 00 62 61 72 00 00 [...bar..] 48array(2) { 49 ["__pclass"]=> 50 string(3) "baz" 51 ["foo"]=> 52 string(3) "bar" 53} 54===DONE=== 55