#define HTTP_REQUEST_ME(method, visibility) PHP_ME(HttpRequest, method, HTTP_ARGS(HttpRequest, method), visibility)
#define HTTP_REQUEST_ALIAS(method, func) HTTP_STATIC_ME_ALIAS(method, func, HTTP_ARGS(HttpRequest, method))
-HTTP_EMPTY_ARGS(__destruct, 0);
HTTP_BEGIN_ARGS(__construct, 0, 0)
HTTP_ARG_VAL(url, 0)
HTTP_ARG_VAL(method, 0)
zend_class_entry *http_request_object_ce;
zend_function_entry http_request_object_fe[] = {
HTTP_REQUEST_ME(__construct, ZEND_ACC_PUBLIC|ZEND_ACC_CTOR)
- HTTP_REQUEST_ME(__destruct, ZEND_ACC_PUBLIC|ZEND_ACC_DTOR)
HTTP_REQUEST_ME(setOptions, ZEND_ACC_PUBLIC)
HTTP_REQUEST_ME(getOptions, ZEND_ACC_PUBLIC)
}
/* }}} */
-/* {{{ proto void HttpRequest::__destruct()
- *
- * Destroys the HttpRequest object.
- */
-PHP_METHOD(HttpRequest, __destruct)
-{
- getObject(http_request_object, obj);
-
- NO_ARGS;
-}
-/* }}} */
-
/* {{{ proto bool HttpRequest::setOptions([array options])
*
* Set the request options to use. See http_get() for a full list of available options.
zval *post, *post_data = NULL;
getObject(http_request_object, obj);
- if (SUCCESS != zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "a!", &post_data)) {
+ if (SUCCESS != zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "a/!", &post_data)) {
RETURN_FALSE;
}
MAKE_STD_ZVAL(post);
array_init(post);
- if (post_data && (Z_TYPE_P(post_data) == IS_ARRAY)) {
+ if (post_data && zend_hash_num_elements(Z_ARRVAL_P(post_data))) {
array_copy(post_data, post);
}
SET_PROP(obj, postFields, post);
}
if (data_len) {
- zval *zdata = GET_PROP(obj, rawPostData);
+ zval *data, *zdata = GET_PROP(obj, rawPostData);
- SEPARATE_ZVAL(&zdata);
- Z_STRVAL_P(zdata) = erealloc(Z_STRVAL_P(zdata), (Z_STRLEN_P(zdata) += data_len) + 1);
- Z_STRVAL_P(zdata)[Z_STRLEN_P(zdata)] = '\0';
- memcpy(Z_STRVAL_P(zdata) + Z_STRLEN_P(zdata) - data_len, raw_data, data_len);
- SET_PROP(obj, rawPostData, zdata);
+ ALLOC_ZVAL(data);
+ *data = *zdata;
+ zval_copy_ctor(data);
+ INIT_PZVAL(data);
+ convert_to_string(data);
+ Z_STRVAL_P(data) = erealloc(Z_STRVAL_P(data), (Z_STRLEN_P(data) += data_len) + 1);
+ Z_STRVAL_P(data)[Z_STRLEN_P(data)] = '\0';
+ memcpy(Z_STRVAL_P(data) + Z_STRLEN_P(data) - data_len, raw_data, data_len);
+ SET_PROP(obj, rawPostData, data);
+ zval_ptr_dtor(&data);
}
RETURN_TRUE;
}
add_next_index_zval(new_post, entry);
SET_PROP(obj, postFiles, new_post);
+ zval_ptr_dtor(&new_post);
RETURN_TRUE;
}
MAKE_STD_ZVAL(post);
array_init(post);
if (files && (Z_TYPE_P(files) == IS_ARRAY)) {
- array_copy(files, post)
+ array_copy(files, post);
}
SET_PROP(obj, postFiles, post);