Skip to content

Commit 19c0949

Browse files
committed
Add support __debugInfo
1 parent 066c21d commit 19c0949

File tree

4 files changed

+5268
-1
lines changed

4 files changed

+5268
-1
lines changed

ext/random/random.c

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1164,6 +1164,27 @@ PHP_METHOD(Random_NumberGenerator_XorShift128Plus, __unserialize)
11641164
}
11651165
/* }}} */
11661166

1167+
/* {{{ DebugInfo */
1168+
PHP_METHOD(Random_NumberGenerator_XorShift128Plus, __debugInfo)
1169+
{
1170+
php_random_numbergenerator *generator = Z_RANDOM_NUMBERGENERATOR_P(ZEND_THIS);
1171+
zval tmp;
1172+
1173+
if (!generator->std.properties) {
1174+
rebuild_object_properties(&generator->std);
1175+
}
1176+
ZVAL_ARR(return_value, zend_array_dup(generator->std.properties));
1177+
1178+
if (generator->algo->serialize) {
1179+
array_init(&tmp);
1180+
if (generator->algo->serialize(generator->state, Z_ARRVAL(tmp)) == FAILURE) {
1181+
zend_throw_exception(NULL, "NumberGenerator serialize failed", 0);
1182+
RETURN_THROWS();
1183+
}
1184+
zend_hash_str_add(Z_ARR_P(return_value), "__states", sizeof("__states") - 1, &tmp);
1185+
}
1186+
}
1187+
11671188
/* {{{ Construct object */
11681189
PHP_METHOD(Random_NumberGenerator_MersenneTwister, __construct)
11691190
{

ext/random/random.stub.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@ public function generate(): int {}
3636
public function __serialize(): array {}
3737

3838
public function __unserialize(array $data): void {}
39+
40+
public function __debugInfo(): array {}
3941
}
4042

4143
class MersenneTwister implements Random\NumberGenerator
@@ -50,6 +52,9 @@ public function __serialize(): array {}
5052

5153
/** @implementation-alias Random\NumberGenerator\XorShift128Plus::__unserialize */
5254
public function __unserialize(array $data): void {}
55+
56+
/** @implementation-alias Random\NumberGenerator\XorShift128Plus::__debugInfo */
57+
public function __debugInfo(): array {}
5358
}
5459

5560
class CombinedLCG implements Random\NumberGenerator
@@ -65,6 +70,9 @@ public function __serialize(): array {}
6570

6671
/** @implementation-alias Random\NumberGenerator\XorShift128Plus::__unserialize */
6772
public function __unserialize(array $data): void {}
73+
74+
/** @implementation-alias Random\NumberGenerator\XorShift128Plus::__debugInfo */
75+
public function __debugInfo(): array {}
6876
}
6977

7078
/** @not-serializable */

ext/random/random_arginfo.h

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/* This is a generated file, edit the .stub.php file instead.
2-
* Stub hash: 7532fe839250b19de68e65d5f6c7ef308e96894e */
2+
* Stub hash: b9fad07117f040bbb936fc2dd449c0babf0eee7a */
33

44
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_lcg_value, 0, 0, IS_DOUBLE, 0)
55
ZEND_END_ARG_INFO()
@@ -45,6 +45,8 @@ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_class_Random_NumberGenerator_Xor
4545
ZEND_ARG_TYPE_INFO(0, data, IS_ARRAY, 0)
4646
ZEND_END_ARG_INFO()
4747

48+
#define arginfo_class_Random_NumberGenerator_XorShift128Plus___debugInfo arginfo_class_Random_NumberGenerator_XorShift128Plus___serialize
49+
4850
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_Random_NumberGenerator_MersenneTwister___construct, 0, 0, 1)
4951
ZEND_ARG_TYPE_INFO(0, seed, IS_LONG, 0)
5052
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, mode, IS_LONG, 0, "MT_RAND_MT19937")
@@ -56,6 +58,8 @@ ZEND_END_ARG_INFO()
5658

5759
#define arginfo_class_Random_NumberGenerator_MersenneTwister___unserialize arginfo_class_Random_NumberGenerator_XorShift128Plus___unserialize
5860

61+
#define arginfo_class_Random_NumberGenerator_MersenneTwister___debugInfo arginfo_class_Random_NumberGenerator_XorShift128Plus___serialize
62+
5963
#define arginfo_class_Random_NumberGenerator_CombinedLCG___construct arginfo_class_Random_NumberGenerator_XorShift128Plus___construct
6064

6165
#define arginfo_class_Random_NumberGenerator_CombinedLCG_generate arginfo_mt_getrandmax
@@ -64,6 +68,8 @@ ZEND_END_ARG_INFO()
6468

6569
#define arginfo_class_Random_NumberGenerator_CombinedLCG___unserialize arginfo_class_Random_NumberGenerator_XorShift128Plus___unserialize
6670

71+
#define arginfo_class_Random_NumberGenerator_CombinedLCG___debugInfo arginfo_class_Random_NumberGenerator_XorShift128Plus___serialize
72+
6773
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_Random_NumberGenerator_Secure___construct, 0, 0, 0)
6874
ZEND_END_ARG_INFO()
6975

@@ -105,6 +111,7 @@ ZEND_METHOD(Random_NumberGenerator_XorShift128Plus, __construct);
105111
ZEND_METHOD(Random_NumberGenerator_XorShift128Plus, generate);
106112
ZEND_METHOD(Random_NumberGenerator_XorShift128Plus, __serialize);
107113
ZEND_METHOD(Random_NumberGenerator_XorShift128Plus, __unserialize);
114+
ZEND_METHOD(Random_NumberGenerator_XorShift128Plus, __debugInfo);
108115
ZEND_METHOD(Random_NumberGenerator_MersenneTwister, __construct);
109116
ZEND_METHOD(Random_NumberGenerator_Secure, __construct);
110117
ZEND_METHOD(Random_Randomizer, __construct);
@@ -135,6 +142,7 @@ static const zend_function_entry class_Random_NumberGenerator_XorShift128Plus_me
135142
ZEND_ME(Random_NumberGenerator_XorShift128Plus, generate, arginfo_class_Random_NumberGenerator_XorShift128Plus_generate, ZEND_ACC_PUBLIC)
136143
ZEND_ME(Random_NumberGenerator_XorShift128Plus, __serialize, arginfo_class_Random_NumberGenerator_XorShift128Plus___serialize, ZEND_ACC_PUBLIC)
137144
ZEND_ME(Random_NumberGenerator_XorShift128Plus, __unserialize, arginfo_class_Random_NumberGenerator_XorShift128Plus___unserialize, ZEND_ACC_PUBLIC)
145+
ZEND_ME(Random_NumberGenerator_XorShift128Plus, __debugInfo, arginfo_class_Random_NumberGenerator_XorShift128Plus___debugInfo, ZEND_ACC_PUBLIC)
138146
ZEND_FE_END
139147
};
140148

@@ -144,6 +152,7 @@ static const zend_function_entry class_Random_NumberGenerator_MersenneTwister_me
144152
ZEND_MALIAS(Random_NumberGenerator_XorShift128Plus, generate, generate, arginfo_class_Random_NumberGenerator_MersenneTwister_generate, ZEND_ACC_PUBLIC)
145153
ZEND_MALIAS(Random_NumberGenerator_XorShift128Plus, __serialize, __serialize, arginfo_class_Random_NumberGenerator_MersenneTwister___serialize, ZEND_ACC_PUBLIC)
146154
ZEND_MALIAS(Random_NumberGenerator_XorShift128Plus, __unserialize, __unserialize, arginfo_class_Random_NumberGenerator_MersenneTwister___unserialize, ZEND_ACC_PUBLIC)
155+
ZEND_MALIAS(Random_NumberGenerator_XorShift128Plus, __debugInfo, __debugInfo, arginfo_class_Random_NumberGenerator_MersenneTwister___debugInfo, ZEND_ACC_PUBLIC)
147156
ZEND_FE_END
148157
};
149158

@@ -153,6 +162,7 @@ static const zend_function_entry class_Random_NumberGenerator_CombinedLCG_method
153162
ZEND_MALIAS(Random_NumberGenerator_XorShift128Plus, generate, generate, arginfo_class_Random_NumberGenerator_CombinedLCG_generate, ZEND_ACC_PUBLIC)
154163
ZEND_MALIAS(Random_NumberGenerator_XorShift128Plus, __serialize, __serialize, arginfo_class_Random_NumberGenerator_CombinedLCG___serialize, ZEND_ACC_PUBLIC)
155164
ZEND_MALIAS(Random_NumberGenerator_XorShift128Plus, __unserialize, __unserialize, arginfo_class_Random_NumberGenerator_CombinedLCG___unserialize, ZEND_ACC_PUBLIC)
165+
ZEND_MALIAS(Random_NumberGenerator_XorShift128Plus, __debugInfo, __debugInfo, arginfo_class_Random_NumberGenerator_CombinedLCG___debugInfo, ZEND_ACC_PUBLIC)
156166
ZEND_FE_END
157167
};
158168

0 commit comments

Comments
 (0)