Skip to content

Commit 122d41f

Browse files
authored
Merge pull request phpredis#1195 from TysonAndre/start-adding-arginfo-2
Add arginfo for ReflectionMethod to redis for some commands
2 parents c760bf6 + 503f265 commit 122d41f

File tree

1 file changed

+107
-40
lines changed

1 file changed

+107
-40
lines changed

redis.c

Lines changed: 107 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -68,9 +68,11 @@ PHP_INI_BEGIN()
6868
PHP_INI_ENTRY("redis.clusters.read_timeout", "", PHP_INI_ALL, NULL)
6969
PHP_INI_END()
7070

71+
/** Argument info for any function expecting 0 args */
7172
ZEND_BEGIN_ARG_INFO_EX(arginfo_void, 0, 0, 0)
7273
ZEND_END_ARG_INFO()
7374

75+
/** {{{ Argument info for commands in redis 1.0 */
7476
ZEND_BEGIN_ARG_INFO_EX(arginfo_connect, 0, 0, 2)
7577
ZEND_ARG_INFO(0, host)
7678
ZEND_ARG_INFO(0, port)
@@ -99,12 +101,6 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_set, 0, 0, 2)
99101
ZEND_ARG_INFO(0, opt)
100102
ZEND_END_ARG_INFO()
101103

102-
ZEND_BEGIN_ARG_INFO_EX(arginfo_setex, 0, 0, 3)
103-
ZEND_ARG_INFO(0, key)
104-
ZEND_ARG_INFO(0, expire)
105-
ZEND_ARG_INFO(0, value)
106-
ZEND_END_ARG_INFO()
107-
108104
ZEND_BEGIN_ARG_INFO_EX(arginfo_key_expire_value, 0, 0, 3)
109105
ZEND_ARG_INFO(0, key)
110106
ZEND_ARG_INFO(0, expire)
@@ -126,7 +122,12 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_mget, 0, 0, 1)
126122
ZEND_END_ARG_INFO()
127123

128124
ZEND_BEGIN_ARG_INFO_EX(arginfo_del, 0, 0, 1)
125+
ZEND_ARG_INFO(0, key)
126+
#if PHP_VERSION_ID >= 50600
127+
ZEND_ARG_VARIADIC_INFO(0, other_keys)
128+
#else
129129
ZEND_ARG_INFO(0, ...)
130+
#endif
130131
ZEND_END_ARG_INFO()
131132

132133
ZEND_BEGIN_ARG_INFO_EX(arginfo_key_start_end, 0, 0, 3)
@@ -165,8 +166,12 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_generic_sort, 0, 0, 1)
165166
ZEND_END_ARG_INFO()
166167

167168
ZEND_BEGIN_ARG_INFO_EX(arginfo_blrpop, 0, 0, 2)
168-
ZEND_ARG_INFO(0, ...)
169-
ZEND_ARG_INFO(0, timeout)
169+
ZEND_ARG_INFO(0, key)
170+
ZEND_ARG_INFO(0, timeout_or_key)
171+
// Can't have variadic keys before timeout.
172+
#if PHP_VERSION_ID >= 50600
173+
ZEND_ARG_VARIADIC_INFO(0, extra_args)
174+
#endif
170175
ZEND_END_ARG_INFO()
171176

172177
ZEND_BEGIN_ARG_INFO_EX(arginfo_lrem, 0, 0, 3)
@@ -217,13 +222,17 @@ ZEND_END_ARG_INFO()
217222

218223
ZEND_BEGIN_ARG_INFO_EX(arginfo_nkeys, 0, 0, 1)
219224
ZEND_ARG_INFO(0, key)
220-
ZEND_ARG_INFO(0, ...)
225+
#if PHP_VERSION_ID >= 50600
226+
ZEND_ARG_VARIADIC_INFO(0, other_keys)
227+
#endif
221228
ZEND_END_ARG_INFO()
222229

223230
ZEND_BEGIN_ARG_INFO_EX(arginfo_dst_nkeys, 0, 0, 2)
224231
ZEND_ARG_INFO(0, dst)
225232
ZEND_ARG_INFO(0, key)
226-
ZEND_ARG_INFO(0, ...)
233+
#if PHP_VERSION_ID >= 50600
234+
ZEND_ARG_VARIADIC_INFO(0, other_keys)
235+
#endif
227236
ZEND_END_ARG_INFO()
228237

229238
ZEND_BEGIN_ARG_INFO_EX(arginfo_set_timeout, 0, 0, 2)
@@ -234,6 +243,59 @@ ZEND_END_ARG_INFO()
234243
ZEND_BEGIN_ARG_INFO_EX(arginfo_auth, 0, 0, 1)
235244
ZEND_ARG_INFO(0, password)
236245
ZEND_END_ARG_INFO()
246+
247+
ZEND_BEGIN_ARG_INFO_EX(arginfo_info, 0, 0, 0)
248+
ZEND_ARG_INFO(0, option)
249+
ZEND_END_ARG_INFO()
250+
251+
ZEND_BEGIN_ARG_INFO_EX(arginfo_select, 0, 0, 1)
252+
ZEND_ARG_INFO(0, dbindex)
253+
ZEND_END_ARG_INFO()
254+
255+
ZEND_BEGIN_ARG_INFO_EX(arginfo_move, 0, 0, 2)
256+
ZEND_ARG_INFO(0, key)
257+
ZEND_ARG_INFO(0, dbindex)
258+
ZEND_END_ARG_INFO()
259+
260+
ZEND_BEGIN_ARG_INFO_EX(arginfo_slaveof, 0, 0, 0)
261+
ZEND_ARG_INFO(0, host)
262+
ZEND_ARG_INFO(0, port)
263+
ZEND_END_ARG_INFO()
264+
265+
ZEND_BEGIN_ARG_INFO_EX(arginfo_object, 0, 0, 2)
266+
ZEND_ARG_INFO(0, field)
267+
ZEND_ARG_INFO(0, key)
268+
ZEND_END_ARG_INFO()
269+
270+
ZEND_BEGIN_ARG_INFO_EX(arginfo_bitop, 0, 0, 3)
271+
ZEND_ARG_INFO(0, operation)
272+
ZEND_ARG_INFO(0, ret_key)
273+
ZEND_ARG_INFO(0, key)
274+
#if PHP_VERSION_ID >= 50600
275+
ZEND_ARG_VARIADIC_INFO(0, other_keys)
276+
#endif
277+
ZEND_END_ARG_INFO()
278+
279+
ZEND_BEGIN_ARG_INFO_EX(arginfo_bitpos, 0, 0, 2)
280+
ZEND_ARG_INFO(0, key)
281+
ZEND_ARG_INFO(0, bit)
282+
ZEND_ARG_INFO(0, start)
283+
ZEND_ARG_INFO(0, end)
284+
ZEND_END_ARG_INFO()
285+
286+
ZEND_BEGIN_ARG_INFO_EX(arginfo_eval, 0, 0, 1)
287+
ZEND_ARG_INFO(0, script)
288+
ZEND_ARG_INFO(0, args)
289+
ZEND_ARG_INFO(0, num_keys)
290+
ZEND_END_ARG_INFO()
291+
292+
ZEND_BEGIN_ARG_INFO_EX(arginfo_evalsha, 0, 0, 1)
293+
ZEND_ARG_INFO(0, script_sha)
294+
ZEND_ARG_INFO(0, args)
295+
ZEND_ARG_INFO(0, num_keys)
296+
ZEND_END_ARG_INFO()
297+
/* }}} */
298+
237299
/**
238300
* Argument info for the SCAN proper
239301
*/
@@ -336,15 +398,15 @@ static zend_function_entry redis_functions[] = {
336398
PHP_ME(Redis, ttl, arginfo_key, ZEND_ACC_PUBLIC)
337399
PHP_ME(Redis, pttl, arginfo_key, ZEND_ACC_PUBLIC)
338400
PHP_ME(Redis, persist, arginfo_key, ZEND_ACC_PUBLIC)
339-
PHP_ME(Redis, info, NULL, ZEND_ACC_PUBLIC)
340-
PHP_ME(Redis, select, NULL, ZEND_ACC_PUBLIC)
341-
PHP_ME(Redis, move, NULL, ZEND_ACC_PUBLIC)
401+
PHP_ME(Redis, info, arginfo_info, ZEND_ACC_PUBLIC)
402+
PHP_ME(Redis, select, arginfo_select, ZEND_ACC_PUBLIC)
403+
PHP_ME(Redis, move, arginfo_move, ZEND_ACC_PUBLIC)
342404
PHP_ME(Redis, bgrewriteaof, arginfo_void, ZEND_ACC_PUBLIC)
343-
PHP_ME(Redis, slaveof, NULL, ZEND_ACC_PUBLIC)
344-
PHP_ME(Redis, object, NULL, ZEND_ACC_PUBLIC)
345-
PHP_ME(Redis, bitop, NULL, ZEND_ACC_PUBLIC)
346-
PHP_ME(Redis, bitcount, NULL, ZEND_ACC_PUBLIC)
347-
PHP_ME(Redis, bitpos, NULL, ZEND_ACC_PUBLIC)
405+
PHP_ME(Redis, slaveof, arginfo_slaveof, ZEND_ACC_PUBLIC)
406+
PHP_ME(Redis, object, arginfo_object, ZEND_ACC_PUBLIC)
407+
PHP_ME(Redis, bitop, arginfo_bitop, ZEND_ACC_PUBLIC)
408+
PHP_ME(Redis, bitcount, arginfo_key, ZEND_ACC_PUBLIC)
409+
PHP_ME(Redis, bitpos, arginfo_bitpos, ZEND_ACC_PUBLIC)
348410

349411
/* 1.1 */
350412
PHP_ME(Redis, mset, NULL, ZEND_ACC_PUBLIC)
@@ -404,19 +466,19 @@ static zend_function_entry redis_functions[] = {
404466
PHP_ME(Redis, unsubscribe, NULL, ZEND_ACC_PUBLIC)
405467
PHP_ME(Redis, punsubscribe, NULL, ZEND_ACC_PUBLIC)
406468

407-
PHP_ME(Redis, time, NULL, ZEND_ACC_PUBLIC)
469+
PHP_ME(Redis, time, arginfo_void, ZEND_ACC_PUBLIC)
408470
PHP_ME(Redis, role, NULL, ZEND_ACC_PUBLIC)
409-
PHP_ME(Redis, eval, NULL, ZEND_ACC_PUBLIC)
410-
PHP_ME(Redis, evalsha, NULL, ZEND_ACC_PUBLIC)
471+
PHP_ME(Redis, eval, arginfo_eval, ZEND_ACC_PUBLIC)
472+
PHP_ME(Redis, evalsha, arginfo_evalsha, ZEND_ACC_PUBLIC)
411473
PHP_ME(Redis, script, NULL, ZEND_ACC_PUBLIC)
412474

413475
PHP_ME(Redis, debug, NULL, ZEND_ACC_PUBLIC)
414476
PHP_ME(Redis, dump, NULL, ZEND_ACC_PUBLIC)
415477
PHP_ME(Redis, restore, NULL, ZEND_ACC_PUBLIC)
416478
PHP_ME(Redis, migrate, NULL, ZEND_ACC_PUBLIC)
417479

418-
PHP_ME(Redis, getLastError, NULL, ZEND_ACC_PUBLIC)
419-
PHP_ME(Redis, clearLastError, NULL, ZEND_ACC_PUBLIC)
480+
PHP_ME(Redis, getLastError, arginfo_void, ZEND_ACC_PUBLIC)
481+
PHP_ME(Redis, clearLastError, arginfo_void, ZEND_ACC_PUBLIC)
420482

421483
PHP_ME(Redis, _prefix, NULL, ZEND_ACC_PUBLIC)
422484
PHP_ME(Redis, _serialize, NULL, ZEND_ACC_PUBLIC)
@@ -458,24 +520,25 @@ static zend_function_entry redis_functions[] = {
458520
PHP_ME(Redis, georadiusbymember, NULL, ZEND_ACC_PUBLIC)
459521

460522
/* introspection */
461-
PHP_ME(Redis, getHost, NULL, ZEND_ACC_PUBLIC)
462-
PHP_ME(Redis, getPort, NULL, ZEND_ACC_PUBLIC)
463-
PHP_ME(Redis, getDBNum, NULL, ZEND_ACC_PUBLIC)
464-
PHP_ME(Redis, getTimeout, NULL, ZEND_ACC_PUBLIC)
465-
PHP_ME(Redis, getReadTimeout, NULL, ZEND_ACC_PUBLIC)
466-
PHP_ME(Redis, getPersistentID, NULL, ZEND_ACC_PUBLIC)
467-
PHP_ME(Redis, getAuth, NULL, ZEND_ACC_PUBLIC)
468-
PHP_ME(Redis, isConnected, NULL, ZEND_ACC_PUBLIC)
523+
PHP_ME(Redis, getHost, arginfo_void, ZEND_ACC_PUBLIC)
524+
PHP_ME(Redis, getPort, arginfo_void, ZEND_ACC_PUBLIC)
525+
PHP_ME(Redis, getDBNum, arginfo_void, ZEND_ACC_PUBLIC)
526+
PHP_ME(Redis, getTimeout, arginfo_void, ZEND_ACC_PUBLIC)
527+
PHP_ME(Redis, getReadTimeout, arginfo_void, ZEND_ACC_PUBLIC)
528+
PHP_ME(Redis, getPersistentID, arginfo_void, ZEND_ACC_PUBLIC)
529+
PHP_ME(Redis, getAuth, arginfo_void, ZEND_ACC_PUBLIC)
530+
PHP_ME(Redis, isConnected, arginfo_void, ZEND_ACC_PUBLIC)
531+
/* TODO: document getMode() and wait() in README? */
469532
PHP_ME(Redis, getMode, NULL, ZEND_ACC_PUBLIC)
470533
PHP_ME(Redis, wait, NULL, ZEND_ACC_PUBLIC)
471534
PHP_ME(Redis, pubsub, NULL, ZEND_ACC_PUBLIC)
472535

473536
/* aliases */
474-
PHP_MALIAS(Redis, open, connect, NULL, ZEND_ACC_PUBLIC)
475-
PHP_MALIAS(Redis, popen, pconnect, NULL, ZEND_ACC_PUBLIC)
537+
PHP_MALIAS(Redis, open, connect, arginfo_connect, ZEND_ACC_PUBLIC)
538+
PHP_MALIAS(Redis, popen, pconnect, arginfo_pconnect, ZEND_ACC_PUBLIC)
476539
PHP_MALIAS(Redis, lLen, lSize, NULL, ZEND_ACC_PUBLIC)
477540
PHP_MALIAS(Redis, sGetMembers, sMembers, NULL, ZEND_ACC_PUBLIC)
478-
PHP_MALIAS(Redis, mget, getMultiple, NULL, ZEND_ACC_PUBLIC)
541+
PHP_MALIAS(Redis, mget, getMultiple, arginfo_mget, ZEND_ACC_PUBLIC)
479542
PHP_MALIAS(Redis, expire, setTimeout, NULL, ZEND_ACC_PUBLIC)
480543
PHP_MALIAS(Redis, zunionstore, zUnion, NULL, ZEND_ACC_PUBLIC)
481544
PHP_MALIAS(Redis, zinterstore, zInter, NULL, ZEND_ACC_PUBLIC)
@@ -486,9 +549,9 @@ static zend_function_entry redis_functions[] = {
486549
PHP_MALIAS(Redis, zRemRangeByScore, zDeleteRangeByScore, NULL, ZEND_ACC_PUBLIC)
487550
PHP_MALIAS(Redis, zRemRangeByRank, zDeleteRangeByRank, NULL, ZEND_ACC_PUBLIC)
488551
PHP_MALIAS(Redis, zSize, zCard, NULL, ZEND_ACC_PUBLIC)
489-
PHP_MALIAS(Redis, substr, getRange, NULL, ZEND_ACC_PUBLIC)
490-
PHP_MALIAS(Redis, rename, renameKey, NULL, ZEND_ACC_PUBLIC)
491-
PHP_MALIAS(Redis, del, delete, NULL, ZEND_ACC_PUBLIC)
552+
PHP_MALIAS(Redis, substr, getRange, arginfo_key_start_end, ZEND_ACC_PUBLIC)
553+
PHP_MALIAS(Redis, rename, renameKey, arginfo_key_newkey, ZEND_ACC_PUBLIC)
554+
PHP_MALIAS(Redis, del, delete, arginfo_del, ZEND_ACC_PUBLIC)
492555
PHP_MALIAS(Redis, keys, getKeys, NULL, ZEND_ACC_PUBLIC)
493556
PHP_MALIAS(Redis, lrem, lRemove, NULL, ZEND_ACC_PUBLIC)
494557
PHP_MALIAS(Redis, ltrim, listTrim, NULL, ZEND_ACC_PUBLIC)
@@ -499,10 +562,10 @@ static zend_function_entry redis_functions[] = {
499562
PHP_MALIAS(Redis, sismember, sContains, NULL, ZEND_ACC_PUBLIC)
500563
PHP_MALIAS(Redis, zReverseRange, zRevRange, NULL, ZEND_ACC_PUBLIC)
501564

502-
PHP_MALIAS(Redis, sendEcho, echo, NULL, ZEND_ACC_PUBLIC)
565+
PHP_MALIAS(Redis, sendEcho, echo, arginfo_echo, ZEND_ACC_PUBLIC)
503566

504-
PHP_MALIAS(Redis, evaluate, eval, NULL, ZEND_ACC_PUBLIC)
505-
PHP_MALIAS(Redis, evaluateSha, evalsha, NULL, ZEND_ACC_PUBLIC)
567+
PHP_MALIAS(Redis, evaluate, eval, arginfo_eval, ZEND_ACC_PUBLIC)
568+
PHP_MALIAS(Redis, evaluateSha, evalsha, arginfo_evalsha, ZEND_ACC_PUBLIC)
506569
PHP_FE_END
507570
};
508571

@@ -1317,11 +1380,13 @@ PHP_METHOD(Redis, getRange)
13171380
}
13181381
/* }}} */
13191382

1383+
/* {{{ proto string Redis::setRange(string key, long start, string value) */
13201384
PHP_METHOD(Redis, setRange)
13211385
{
13221386
REDIS_PROCESS_KW_CMD("SETRANGE", redis_key_long_str_cmd,
13231387
redis_long_response);
13241388
}
1389+
/* }}} */
13251390

13261391
/* {{{ proto long Redis::getbit(string key, long idx) */
13271392
PHP_METHOD(Redis, getBit)
@@ -1330,10 +1395,12 @@ PHP_METHOD(Redis, getBit)
13301395
}
13311396
/* }}} */
13321397

1398+
/* {{{ proto long Redis::setbit(string key, long idx, bool|int value) */
13331399
PHP_METHOD(Redis, setBit)
13341400
{
13351401
REDIS_PROCESS_CMD(setbit, redis_long_response);
13361402
}
1403+
/* }}} */
13371404

13381405
/* {{{ proto long Redis::strlen(string key) */
13391406
PHP_METHOD(Redis, strlen)

0 commit comments

Comments
 (0)