mirror of
https://github.com/macintoshplus/mongo-php-driver.git
synced 2026-04-25 17:38:09 +02:00
6887226d34
* Add missing macros for declaring arguments * Add macros to define disabled constructor and __wakeup * Define arginfo via stubs for BSON classes * Declare tentative return types in interfaces * Add correct return type for __set_state methods * Generate class entries for BSON classes * Declare Binary class constants in stub file * Use stubs in exception classes * Add stubs for monitoring classes * Fix wrong JsonSerializable class in BSON stubs * Disable declaration-after-statement This is necessary to let the generated arginfo files compile * Use stubs for driver classes * Fix deprecation messages in tests * Add missing macro * Fix tests relying on value injection * Parse parameters in disabled constructor/wakup function * Add note about arginfo files to contribution docs * Add GitHub action to check generated arginfo files * PHPC-2115: Use DateTimeInterface in UTCDateTime constructor signature * Don't install mongodb extension in GitHub actions workflows * Change indentation in stub files * Use individual #if conditions for each stub method * Make disabled constructor/wakeup methods static * Fix bulkWrite parameter name * Use %d to match property count in tests * Ensure all classes with disabled serialisation declare __wakeup
56 lines
1.0 KiB
PHP
56 lines
1.0 KiB
PHP
--TEST--
|
|
PHPC-1006: Do not modify memory of Persistable::bsonSerialize() return value
|
|
--FILE--
|
|
<?php
|
|
|
|
require_once __DIR__ . '/../utils/basic.inc';
|
|
|
|
class MyClass implements MongoDB\BSON\Persistable
|
|
{
|
|
public $data;
|
|
|
|
public function __construct()
|
|
{
|
|
$this->data = [
|
|
'__pclass' => 'baz',
|
|
'foo' => 'bar',
|
|
];
|
|
}
|
|
|
|
#[\ReturnTypeWillChange]
|
|
public function bsonSerialize()
|
|
{
|
|
return $this->data;
|
|
}
|
|
|
|
public function bsonUnserialize(array $data): void
|
|
{
|
|
}
|
|
}
|
|
|
|
$obj = new MyClass;
|
|
var_dump($obj->data);
|
|
hex_dump(fromPHP($obj));
|
|
var_dump($obj->data);
|
|
|
|
?>
|
|
===DONE===
|
|
<?php exit(0); ?>
|
|
--EXPECT--
|
|
array(2) {
|
|
["__pclass"]=>
|
|
string(3) "baz"
|
|
["foo"]=>
|
|
string(3) "bar"
|
|
}
|
|
0 : 28 00 00 00 05 5f 5f 70 63 6c 61 73 73 00 07 00 [(....__pclass...]
|
|
10 : 00 00 80 4d 79 43 6c 61 73 73 02 66 6f 6f 00 04 [...MyClass.foo..]
|
|
20 : 00 00 00 62 61 72 00 00 [...bar..]
|
|
array(2) {
|
|
["__pclass"]=>
|
|
string(3) "baz"
|
|
["foo"]=>
|
|
string(3) "bar"
|
|
}
|
|
===DONE===
|