- allow passing request options to the ctor
authorMichael Wallner <mike@php.net>
Sun, 9 Oct 2005 20:58:56 +0000 (20:58 +0000)
committerMichael Wallner <mike@php.net>
Sun, 9 Oct 2005 20:58:56 +0000 (20:58 +0000)
- adjust test

http_request_object.c
tests/HttpRequest_001.phpt

index 37e2a58bd75c031f3b8a11828ca75ecf647b2eac..479e0b699978fcffd017a281be207d28ad1995af 100644 (file)
@@ -23,6 +23,8 @@
 
 #if defined(ZEND_ENGINE_2) && defined(HTTP_HAVE_CURL)
 
 
 #if defined(ZEND_ENGINE_2) && defined(HTTP_HAVE_CURL)
 
+#include "zend_interfaces.h"
+
 #include "php_http_std_defs.h"
 #include "php_http_request_object.h"
 #include "php_http_request_api.h"
 #include "php_http_std_defs.h"
 #include "php_http_request_object.h"
 #include "php_http_request_api.h"
@@ -52,6 +54,7 @@ HTTP_EMPTY_ARGS(__destruct, 0);
 HTTP_BEGIN_ARGS(__construct, 0, 0)
        HTTP_ARG_VAL(url, 0)
        HTTP_ARG_VAL(method, 0)
 HTTP_BEGIN_ARGS(__construct, 0, 0)
        HTTP_ARG_VAL(url, 0)
        HTTP_ARG_VAL(method, 0)
+       HTTP_ARG_VAL(options, 0)
 HTTP_END_ARGS;
 
 HTTP_EMPTY_ARGS(getOptions, 0);
 HTTP_END_ARGS;
 
 HTTP_EMPTY_ARGS(getOptions, 0);
@@ -646,13 +649,14 @@ static inline void _http_request_get_options_subr(INTERNAL_FUNCTION_PARAMETERS,
 
 /* ### USERLAND ### */
 
 
 /* ### USERLAND ### */
 
-/* {{{ proto void HttpRequest::__construct([string url[, int request_method = HTTP_METH_GET]])
+/* {{{ proto void HttpRequest::__construct([string url[, int request_method = HTTP_METH_GET[, array options]]])
  *
  * Instantiate a new HttpRequest object.
  * 
  * Accepts a string as optional parameter containing the target request url.
  * Additianally accepts an optional int parameter specifying the request method
  *
  * Instantiate a new HttpRequest object.
  * 
  * Accepts a string as optional parameter containing the target request url.
  * Additianally accepts an optional int parameter specifying the request method
- * to use.
+ * to use and an associative array as optional third parameter which will be
+ * passed to HttpRequest::setOptions(). 
  * 
  * Throws HttpException.
  */
  * 
  * Throws HttpException.
  */
@@ -661,10 +665,11 @@ PHP_METHOD(HttpRequest, __construct)
        char *URL = NULL;
        int URL_len;
        long meth = -1;
        char *URL = NULL;
        int URL_len;
        long meth = -1;
+       zval *options = NULL;
        getObject(http_request_object, obj);
 
        SET_EH_THROW_HTTP();
        getObject(http_request_object, obj);
 
        SET_EH_THROW_HTTP();
-       if (SUCCESS == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|sl", &URL, &URL_len, &meth)) {
+       if (SUCCESS == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|sla", &URL, &URL_len, &meth, &options)) {
                INIT_PARR(obj, options);
                INIT_PARR(obj, responseInfo);
                INIT_PARR(obj, responseData);
                INIT_PARR(obj, options);
                INIT_PARR(obj, responseInfo);
                INIT_PARR(obj, responseData);
@@ -677,6 +682,9 @@ PHP_METHOD(HttpRequest, __construct)
                if (meth > -1) {
                        UPD_PROP(obj, long, method, meth);
                }
                if (meth > -1) {
                        UPD_PROP(obj, long, method, meth);
                }
+               if (options) {
+                       zend_call_method_with_1_params(&getThis(), Z_OBJCE_P(getThis()), NULL, "setoptions", NULL, options);
+               }
        }
        SET_EH_NORMAL();
 }
        }
        SET_EH_NORMAL();
 }
index 27cd1a02cb563b92b843b638d0da1be89ced1c7f..cd6ae675a7eeba138f0d362728acac294ea9e2a8 100644 (file)
@@ -9,9 +9,8 @@ checkcls('HttpRequest');
 --FILE--
 <?php
 echo "-TEST\n";
 --FILE--
 <?php
 echo "-TEST\n";
-$r1 = new HttpRequest;
+$r1 = new HttpRequest(null, 0, array('redirect'=>11, 'headers'=>array('X-Foo'=>'Bar')));
 $r2 = new HttpRequest;
 $r2 = new HttpRequest;
-$r1->setOptions(array('redirect'=>11, 'headers'=>array('X-Foo'=>'Bar')));
 $r2->setOptions(array('redirect'=>99, 'headers'=>array('X-Bar'=>'Foo')));
 $o1 = $r1->getOptions();
 $o2 = $r2->getOptions();
 $r2->setOptions(array('redirect'=>99, 'headers'=>array('X-Bar'=>'Foo')));
 $o1 = $r1->getOptions();
 $o2 = $r2->getOptions();