Skip to content

Commit a09d0e6

Browse files
TysonAndreTysonAndre-tmg
authored andcommitted
Add arginfo for ReflectionMethod to redis for a few more commands
This is incomplete, writing arginfo for everything in a single PR would be difficult for reviewers. This focuses on string operations and some common commands for redis 1.0. The macro's arguments are: ZEND_BEGIN_ARG_INFO_EX(name, _unused, return_reference, required_num_args) This is based on what was written in README, not 100% sure if it matches the code.
1 parent c760bf6 commit a09d0e6

File tree

1 file changed

+106
-41
lines changed

1 file changed

+106
-41
lines changed

redis.c

Lines changed: 106 additions & 41 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,10 @@ 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)
129-
ZEND_ARG_INFO(0, ...)
125+
ZEND_ARG_INFO(0, key)
126+
#if PHP_VERSION_ID >= 50600
127+
ZEND_ARG_VARIADIC_INFO(0, other_keys)
128+
#endif
130129
ZEND_END_ARG_INFO()
131130

132131
ZEND_BEGIN_ARG_INFO_EX(arginfo_key_start_end, 0, 0, 3)
@@ -165,8 +164,12 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_generic_sort, 0, 0, 1)
165164
ZEND_END_ARG_INFO()
166165

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

172175
ZEND_BEGIN_ARG_INFO_EX(arginfo_lrem, 0, 0, 3)
@@ -217,13 +220,17 @@ ZEND_END_ARG_INFO()
217220

218221
ZEND_BEGIN_ARG_INFO_EX(arginfo_nkeys, 0, 0, 1)
219222
ZEND_ARG_INFO(0, key)
220-
ZEND_ARG_INFO(0, ...)
223+
#if PHP_VERSION_ID >= 50600
224+
ZEND_ARG_VARIADIC_INFO(0, other_keys)
225+
#endif
221226
ZEND_END_ARG_INFO()
222227

223228
ZEND_BEGIN_ARG_INFO_EX(arginfo_dst_nkeys, 0, 0, 2)
224229
ZEND_ARG_INFO(0, dst)
225230
ZEND_ARG_INFO(0, key)
226-
ZEND_ARG_INFO(0, ...)
231+
#if PHP_VERSION_ID >= 50600
232+
ZEND_ARG_VARIADIC_INFO(0, other_keys)
233+
#endif
227234
ZEND_END_ARG_INFO()
228235

229236
ZEND_BEGIN_ARG_INFO_EX(arginfo_set_timeout, 0, 0, 2)
@@ -234,6 +241,59 @@ ZEND_END_ARG_INFO()
234241
ZEND_BEGIN_ARG_INFO_EX(arginfo_auth, 0, 0, 1)
235242
ZEND_ARG_INFO(0, password)
236243
ZEND_END_ARG_INFO()
244+
245+
ZEND_BEGIN_ARG_INFO_EX(arginfo_info, 0, 0, 0)
246+
ZEND_ARG_INFO(0, option)
247+
ZEND_END_ARG_INFO()
248+
249+
ZEND_BEGIN_ARG_INFO_EX(arginfo_select, 0, 0, 1)
250+
ZEND_ARG_INFO(0, dbindex)
251+
ZEND_END_ARG_INFO()
252+
253+
ZEND_BEGIN_ARG_INFO_EX(arginfo_move, 0, 0, 2)
254+
ZEND_ARG_INFO(0, key)
255+
ZEND_ARG_INFO(0, dbindex)
256+
ZEND_END_ARG_INFO()
257+
258+
ZEND_BEGIN_ARG_INFO_EX(arginfo_slaveof, 0, 0, 0)
259+
ZEND_ARG_INFO(0, host)
260+
ZEND_ARG_INFO(0, port)
261+
ZEND_END_ARG_INFO()
262+
263+
ZEND_BEGIN_ARG_INFO_EX(arginfo_object, 0, 0, 2)
264+
ZEND_ARG_INFO(0, field)
265+
ZEND_ARG_INFO(0, key)
266+
ZEND_END_ARG_INFO()
267+
268+
ZEND_BEGIN_ARG_INFO_EX(arginfo_bitop, 0, 0, 3)
269+
ZEND_ARG_INFO(0, operation)
270+
ZEND_ARG_INFO(0, ret_key)
271+
ZEND_ARG_INFO(0, key)
272+
#if PHP_VERSION_ID >= 50600
273+
ZEND_ARG_VARIADIC_INFO(0, other_keys)
274+
#endif
275+
ZEND_END_ARG_INFO()
276+
277+
ZEND_BEGIN_ARG_INFO_EX(arginfo_bitpos, 0, 0, 2)
278+
ZEND_ARG_INFO(0, key)
279+
ZEND_ARG_INFO(0, bit)
280+
ZEND_ARG_INFO(0, start)
281+
ZEND_ARG_INFO(0, end)
282+
ZEND_END_ARG_INFO()
283+
284+
ZEND_BEGIN_ARG_INFO_EX(arginfo_eval, 0, 0, 1)
285+
ZEND_ARG_INFO(0, script)
286+
ZEND_ARG_INFO(0, args)
287+
ZEND_ARG_INFO(0, num_keys)
288+
ZEND_END_ARG_INFO()
289+
290+
ZEND_BEGIN_ARG_INFO_EX(arginfo_evalsha, 0, 0, 1)
291+
ZEND_ARG_INFO(0, script_sha)
292+
ZEND_ARG_INFO(0, args)
293+
ZEND_ARG_INFO(0, num_keys)
294+
ZEND_END_ARG_INFO()
295+
/* }}} */
296+
237297
/**
238298
* Argument info for the SCAN proper
239299
*/
@@ -336,15 +396,15 @@ static zend_function_entry redis_functions[] = {
336396
PHP_ME(Redis, ttl, arginfo_key, ZEND_ACC_PUBLIC)
337397
PHP_ME(Redis, pttl, arginfo_key, ZEND_ACC_PUBLIC)
338398
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)
399+
PHP_ME(Redis, info, arginfo_info, ZEND_ACC_PUBLIC)
400+
PHP_ME(Redis, select, arginfo_select, ZEND_ACC_PUBLIC)
401+
PHP_ME(Redis, move, arginfo_move, ZEND_ACC_PUBLIC)
342402
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)
403+
PHP_ME(Redis, slaveof, arginfo_slaveof, ZEND_ACC_PUBLIC)
404+
PHP_ME(Redis, object, arginfo_object, ZEND_ACC_PUBLIC)
405+
PHP_ME(Redis, bitop, arginfo_bitop, ZEND_ACC_PUBLIC)
406+
PHP_ME(Redis, bitcount, arginfo_key, ZEND_ACC_PUBLIC)
407+
PHP_ME(Redis, bitpos, arginfo_bitpos, ZEND_ACC_PUBLIC)
348408

349409
/* 1.1 */
350410
PHP_ME(Redis, mset, NULL, ZEND_ACC_PUBLIC)
@@ -404,19 +464,19 @@ static zend_function_entry redis_functions[] = {
404464
PHP_ME(Redis, unsubscribe, NULL, ZEND_ACC_PUBLIC)
405465
PHP_ME(Redis, punsubscribe, NULL, ZEND_ACC_PUBLIC)
406466

407-
PHP_ME(Redis, time, NULL, ZEND_ACC_PUBLIC)
467+
PHP_ME(Redis, time, arginfo_void, ZEND_ACC_PUBLIC)
408468
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)
469+
PHP_ME(Redis, eval, arginfo_eval, ZEND_ACC_PUBLIC)
470+
PHP_ME(Redis, evalsha, arginfo_evalsha, ZEND_ACC_PUBLIC)
411471
PHP_ME(Redis, script, NULL, ZEND_ACC_PUBLIC)
412472

413473
PHP_ME(Redis, debug, NULL, ZEND_ACC_PUBLIC)
414474
PHP_ME(Redis, dump, NULL, ZEND_ACC_PUBLIC)
415475
PHP_ME(Redis, restore, NULL, ZEND_ACC_PUBLIC)
416476
PHP_ME(Redis, migrate, NULL, ZEND_ACC_PUBLIC)
417477

418-
PHP_ME(Redis, getLastError, NULL, ZEND_ACC_PUBLIC)
419-
PHP_ME(Redis, clearLastError, NULL, ZEND_ACC_PUBLIC)
478+
PHP_ME(Redis, getLastError, arginfo_void, ZEND_ACC_PUBLIC)
479+
PHP_ME(Redis, clearLastError, arginfo_void, ZEND_ACC_PUBLIC)
420480

421481
PHP_ME(Redis, _prefix, NULL, ZEND_ACC_PUBLIC)
422482
PHP_ME(Redis, _serialize, NULL, ZEND_ACC_PUBLIC)
@@ -458,24 +518,25 @@ static zend_function_entry redis_functions[] = {
458518
PHP_ME(Redis, georadiusbymember, NULL, ZEND_ACC_PUBLIC)
459519

460520
/* 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)
521+
PHP_ME(Redis, getHost, arginfo_void, ZEND_ACC_PUBLIC)
522+
PHP_ME(Redis, getPort, arginfo_void, ZEND_ACC_PUBLIC)
523+
PHP_ME(Redis, getDBNum, arginfo_void, ZEND_ACC_PUBLIC)
524+
PHP_ME(Redis, getTimeout, arginfo_void, ZEND_ACC_PUBLIC)
525+
PHP_ME(Redis, getReadTimeout, arginfo_void, ZEND_ACC_PUBLIC)
526+
PHP_ME(Redis, getPersistentID, arginfo_void, ZEND_ACC_PUBLIC)
527+
PHP_ME(Redis, getAuth, arginfo_void, ZEND_ACC_PUBLIC)
528+
PHP_ME(Redis, isConnected, arginfo_void, ZEND_ACC_PUBLIC)
529+
/* TODO: document getMode() and wait() in README? */
469530
PHP_ME(Redis, getMode, NULL, ZEND_ACC_PUBLIC)
470531
PHP_ME(Redis, wait, NULL, ZEND_ACC_PUBLIC)
471532
PHP_ME(Redis, pubsub, NULL, ZEND_ACC_PUBLIC)
472533

473534
/* aliases */
474-
PHP_MALIAS(Redis, open, connect, NULL, ZEND_ACC_PUBLIC)
475-
PHP_MALIAS(Redis, popen, pconnect, NULL, ZEND_ACC_PUBLIC)
535+
PHP_MALIAS(Redis, open, connect, arginfo_connect, ZEND_ACC_PUBLIC)
536+
PHP_MALIAS(Redis, popen, pconnect, arginfo_pconnect, ZEND_ACC_PUBLIC)
476537
PHP_MALIAS(Redis, lLen, lSize, NULL, ZEND_ACC_PUBLIC)
477538
PHP_MALIAS(Redis, sGetMembers, sMembers, NULL, ZEND_ACC_PUBLIC)
478-
PHP_MALIAS(Redis, mget, getMultiple, NULL, ZEND_ACC_PUBLIC)
539+
PHP_MALIAS(Redis, mget, getMultiple, arginfo_mget, ZEND_ACC_PUBLIC)
479540
PHP_MALIAS(Redis, expire, setTimeout, NULL, ZEND_ACC_PUBLIC)
480541
PHP_MALIAS(Redis, zunionstore, zUnion, NULL, ZEND_ACC_PUBLIC)
481542
PHP_MALIAS(Redis, zinterstore, zInter, NULL, ZEND_ACC_PUBLIC)
@@ -486,9 +547,9 @@ static zend_function_entry redis_functions[] = {
486547
PHP_MALIAS(Redis, zRemRangeByScore, zDeleteRangeByScore, NULL, ZEND_ACC_PUBLIC)
487548
PHP_MALIAS(Redis, zRemRangeByRank, zDeleteRangeByRank, NULL, ZEND_ACC_PUBLIC)
488549
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)
550+
PHP_MALIAS(Redis, substr, getRange, arginfo_key_start_end, ZEND_ACC_PUBLIC)
551+
PHP_MALIAS(Redis, rename, renameKey, arginfo_key_newkey, ZEND_ACC_PUBLIC)
552+
PHP_MALIAS(Redis, del, delete, arginfo_del, ZEND_ACC_PUBLIC)
492553
PHP_MALIAS(Redis, keys, getKeys, NULL, ZEND_ACC_PUBLIC)
493554
PHP_MALIAS(Redis, lrem, lRemove, NULL, ZEND_ACC_PUBLIC)
494555
PHP_MALIAS(Redis, ltrim, listTrim, NULL, ZEND_ACC_PUBLIC)
@@ -499,10 +560,10 @@ static zend_function_entry redis_functions[] = {
499560
PHP_MALIAS(Redis, sismember, sContains, NULL, ZEND_ACC_PUBLIC)
500561
PHP_MALIAS(Redis, zReverseRange, zRevRange, NULL, ZEND_ACC_PUBLIC)
501562

502-
PHP_MALIAS(Redis, sendEcho, echo, NULL, ZEND_ACC_PUBLIC)
563+
PHP_MALIAS(Redis, sendEcho, echo, arginfo_echo, ZEND_ACC_PUBLIC)
503564

504-
PHP_MALIAS(Redis, evaluate, eval, NULL, ZEND_ACC_PUBLIC)
505-
PHP_MALIAS(Redis, evaluateSha, evalsha, NULL, ZEND_ACC_PUBLIC)
565+
PHP_MALIAS(Redis, evaluate, eval, arginfo_eval, ZEND_ACC_PUBLIC)
566+
PHP_MALIAS(Redis, evaluateSha, evalsha, arginfo_evalsha, ZEND_ACC_PUBLIC)
506567
PHP_FE_END
507568
};
508569

@@ -1317,11 +1378,13 @@ PHP_METHOD(Redis, getRange)
13171378
}
13181379
/* }}} */
13191380

1381+
/* {{{ proto string Redis::setRange(string key, long start, string value) */
13201382
PHP_METHOD(Redis, setRange)
13211383
{
13221384
REDIS_PROCESS_KW_CMD("SETRANGE", redis_key_long_str_cmd,
13231385
redis_long_response);
13241386
}
1387+
/* }}} */
13251388

13261389
/* {{{ proto long Redis::getbit(string key, long idx) */
13271390
PHP_METHOD(Redis, getBit)
@@ -1330,10 +1393,12 @@ PHP_METHOD(Redis, getBit)
13301393
}
13311394
/* }}} */
13321395

1396+
/* {{{ proto long Redis::setbit(string key, long idx, bool|int value) */
13331397
PHP_METHOD(Redis, setBit)
13341398
{
13351399
REDIS_PROCESS_CMD(setbit, redis_long_response);
13361400
}
1401+
/* }}} */
13371402

13381403
/* {{{ proto long Redis::strlen(string key) */
13391404
PHP_METHOD(Redis, strlen)

0 commit comments

Comments
 (0)