@@ -455,82 +455,18 @@ PHP_MINFO_FUNCTION(redis)
455
455
Public constructor */
456
456
PHP_METHOD (Redis , __construct )
457
457
{
458
+ HashTable * opts = NULL ;
458
459
redis_object * redis ;
459
- zend_string * zkey ;
460
- zval * val , * opts = NULL ;
461
460
462
- if (zend_parse_parameters (ZEND_NUM_ARGS (), "|a" , & opts ) == FAILURE ) {
463
- RETURN_THROWS ();
464
- }
461
+ ZEND_PARSE_PARAMETERS_START (0 , 1 )
462
+ Z_PARAM_OPTIONAL
463
+ Z_PARAM_ARRAY_HT_OR_NULL (opts )
464
+ ZEND_PARSE_PARAMETERS_END_EX (RETURN_THROWS ());
465
465
466
- if (opts != NULL ) {
467
- redis = PHPREDIS_ZVAL_GET_OBJECT (redis_object , getThis ());
468
- redis -> sock = redis_sock_create ("127.0.0.1" , sizeof ("127.0.0.1" ) - 1 , 6379 , 0 , 0 , 0 , NULL , 0 );
469
-
470
- ZEND_HASH_FOREACH_STR_KEY_VAL (Z_ARRVAL_P (opts ), zkey , val ) {
471
- if (zkey == NULL ) {
472
- continue ;
473
- }
474
- ZVAL_DEREF (val );
475
- if (zend_string_equals_literal_ci (zkey , "host" )) {
476
- if (Z_TYPE_P (val ) != IS_STRING ) {
477
- REDIS_VALUE_EXCEPTION ("Invalid host" );
478
- RETURN_THROWS ();
479
- }
480
- zend_string_release (redis -> sock -> host );
481
- redis -> sock -> host = zval_get_string (val );
482
- } else if (zend_string_equals_literal_ci (zkey , "port" )) {
483
- if (Z_TYPE_P (val ) != IS_LONG ) {
484
- REDIS_VALUE_EXCEPTION ("Invalid port" );
485
- RETURN_THROWS ();
486
- }
487
- redis -> sock -> port = zval_get_long (val );
488
- } else if (zend_string_equals_literal_ci (zkey , "connectTimeout" )) {
489
- if (Z_TYPE_P (val ) != IS_LONG && Z_TYPE_P (val ) != IS_DOUBLE ) {
490
- REDIS_VALUE_EXCEPTION ("Invalid connect timeout" );
491
- RETURN_THROWS ();
492
- }
493
- redis -> sock -> timeout = zval_get_double (val );
494
- } else if (zend_string_equals_literal_ci (zkey , "readTimeout" )) {
495
- if (Z_TYPE_P (val ) != IS_LONG && Z_TYPE_P (val ) != IS_DOUBLE ) {
496
- REDIS_VALUE_EXCEPTION ("Invalid read timeout" );
497
- RETURN_THROWS ();
498
- }
499
- redis -> sock -> read_timeout = zval_get_double (val );
500
- } else if (zend_string_equals_literal_ci (zkey , "persistent" )) {
501
- if (Z_TYPE_P (val ) == IS_STRING ) {
502
- if (redis -> sock -> persistent_id ) zend_string_release (redis -> sock -> persistent_id );
503
- redis -> sock -> persistent_id = zval_get_string (val );
504
- redis -> sock -> persistent = 1 ;
505
- } else {
506
- redis -> sock -> persistent = zval_is_true (val );
507
- }
508
- } else if (zend_string_equals_literal_ci (zkey , "retryInterval" )) {
509
- if (Z_TYPE_P (val ) != IS_LONG && Z_TYPE_P (val ) != IS_DOUBLE ) {
510
- REDIS_VALUE_EXCEPTION ("Invalid retry interval" );
511
- RETURN_THROWS ();
512
- }
513
- redis -> sock -> retry_interval = zval_get_long (val );
514
- } else if (zend_string_equals_literal_ci (zkey , "ssl" )) {
515
- if (redis_sock_set_stream_context (redis -> sock , val ) != SUCCESS ) {
516
- REDIS_VALUE_EXCEPTION ("Invalid SSL context options" );
517
- RETURN_THROWS ();
518
- }
519
- } else if (zend_string_equals_literal_ci (zkey , "auth" )) {
520
- if (Z_TYPE_P (val ) != IS_STRING && Z_TYPE_P (val ) != IS_ARRAY ) {
521
- REDIS_VALUE_EXCEPTION ("Invalid auth credentials" );
522
- RETURN_THROWS ();
523
- }
524
- redis_sock_set_auth_zval (redis -> sock , val );
525
- } else if (zend_string_equals_literal_ci (zkey , "backoff" )) {
526
- if (redis_sock_set_backoff (redis -> sock , val ) != SUCCESS ) {
527
- REDIS_VALUE_EXCEPTION ("Invalid backoff options" );
528
- RETURN_THROWS ();
529
- }
530
- } else {
531
- php_error_docref (NULL , E_WARNING , "Skip unknown option '%s'" , ZSTR_VAL (zkey ));
532
- }
533
- } ZEND_HASH_FOREACH_END ();
466
+ redis = PHPREDIS_ZVAL_GET_OBJECT (redis_object , getThis ());
467
+ redis -> sock = redis_sock_create (ZEND_STRL ("127.0.0.1" ), 6379 , 0 , 0 , 0 , NULL , 0 );
468
+ if (opts != NULL && redis_sock_configure (redis -> sock , opts ) != SUCCESS ) {
469
+ RETURN_THROWS ();
534
470
}
535
471
}
536
472
/* }}} */
0 commit comments