X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=php_http_env_request.c;h=701e9fda8f1f08dd88a4207d7e2f775e348e5485;hp=cd9dae08d35e182c0db851ae4c569f4c03b332fb;hb=729594cae203b09419d195ec0dabde0430c9f1cd;hpb=517336efe27e1f8e58e36352478a6d9ffdcdf378 diff --git a/php_http_env_request.c b/php_http_env_request.c index cd9dae0..701e9fd 100644 --- a/php_http_env_request.c +++ b/php_http_env_request.c @@ -13,8 +13,6 @@ #include "php_http_api.h" -zend_class_entry *php_http_env_request_class_entry; - #undef PHP_HTTP_BEGIN_ARGS #undef PHP_HTTP_EMPTY_ARGS #define PHP_HTTP_BEGIN_ARGS(method, req_args) PHP_HTTP_BEGIN_ARGS_EX(HttpEnvRequest, method, 0, req_args) @@ -26,6 +24,13 @@ PHP_HTTP_EMPTY_ARGS(getForm); PHP_HTTP_EMPTY_ARGS(getQuery); PHP_HTTP_EMPTY_ARGS(getFiles); +static zend_class_entry *php_http_env_request_class_entry; + +zend_class_entry *php_http_env_request_get_class_entry(void) +{ + return php_http_env_request_class_entry; +} + zend_function_entry php_http_env_request_method_entry[] = { PHP_HTTP_ENV_REQUEST_ME(__construct, ZEND_ACC_PUBLIC|ZEND_ACC_CTOR) PHP_HTTP_ENV_REQUEST_ME(getForm, ZEND_ACC_PUBLIC) @@ -119,43 +124,38 @@ static int grab_files(void *zpp TSRMLS_DC, int argc, va_list argv, zend_hash_key PHP_METHOD(HttpEnvRequest, __construct) { - with_error_handling(EH_THROW, php_http_exception_class_entry) { + with_error_handling(EH_THROW, php_http_exception_get_class_entry()) { if (SUCCESS == zend_parse_parameters_none()) { php_http_message_object_t *obj = zend_object_store_get_object(getThis() TSRMLS_CC); - zval *zsg; + zval *zsg, *zqs; obj->message = php_http_message_init_env(obj->message, PHP_HTTP_REQUEST TSRMLS_CC); + obj->body.handle = 0; - if ((zsg = php_http_env_get_superglobal(ZEND_STRL("_GET") TSRMLS_CC))) { - zval *zquery; - - MAKE_STD_ZVAL(zquery); - object_init_ex(zquery, php_http_querystring_class_entry); - if (SUCCESS == php_http_querystring_ctor(zquery, zsg TSRMLS_CC)) { - zend_update_property(php_http_env_request_class_entry, getThis(), ZEND_STRL("query"), zquery TSRMLS_CC); - } - zval_ptr_dtor(&zquery); + zsg = php_http_env_get_superglobal(ZEND_STRL("_GET") TSRMLS_CC); + MAKE_STD_ZVAL(zqs); + object_init_ex(zqs, php_http_querystring_get_class_entry()); + if (SUCCESS == php_http_querystring_ctor(zqs, zsg TSRMLS_CC)) { + zend_update_property(php_http_env_request_class_entry, getThis(), ZEND_STRL("query"), zqs TSRMLS_CC); } - if ((zsg = php_http_env_get_superglobal(ZEND_STRL("_POST") TSRMLS_CC))) { - zval *zpost; - - MAKE_STD_ZVAL(zpost); - object_init_ex(zpost, php_http_querystring_class_entry); - if (SUCCESS == php_http_querystring_ctor(zpost, zsg TSRMLS_CC)) { - zend_update_property(php_http_env_request_class_entry, getThis(), ZEND_STRL("form"), zpost TSRMLS_CC); - } - zval_ptr_dtor(&zpost); + zval_ptr_dtor(&zqs); + + zsg = php_http_env_get_superglobal(ZEND_STRL("_POST") TSRMLS_CC); + MAKE_STD_ZVAL(zqs); + object_init_ex(zqs, php_http_querystring_get_class_entry()); + if (SUCCESS == php_http_querystring_ctor(zqs, zsg TSRMLS_CC)) { + zend_update_property(php_http_env_request_class_entry, getThis(), ZEND_STRL("form"), zqs TSRMLS_CC); } + zval_ptr_dtor(&zqs); + + MAKE_STD_ZVAL(zqs); + array_init(zqs); if ((zsg = php_http_env_get_superglobal(ZEND_STRL("_FILES") TSRMLS_CC))) { - zval *zfiles; - - MAKE_STD_ZVAL(zfiles); - array_init(zfiles); - zend_hash_apply_with_arguments(Z_ARRVAL_P(zsg) TSRMLS_CC, grab_files, 1, zfiles); - - zend_update_property(php_http_env_request_class_entry, getThis(), ZEND_STRL("files"), zfiles TSRMLS_CC); - zval_ptr_dtor(&zfiles); + zend_hash_apply_with_arguments(Z_ARRVAL_P(zsg) TSRMLS_CC, grab_files, 1, zqs); } + + zend_update_property(php_http_env_request_class_entry, getThis(), ZEND_STRL("files"), zqs TSRMLS_CC); + zval_ptr_dtor(&zqs); } } end_error_handling(); } @@ -184,7 +184,7 @@ PHP_METHOD(HttpEnvRequest, getFiles) PHP_MINIT_FUNCTION(http_env_request) { - PHP_HTTP_REGISTER_CLASS(http\\Env, Request, http_env_request, php_http_message_class_entry, 0); + PHP_HTTP_REGISTER_CLASS(http\\Env, Request, http_env_request, php_http_message_get_class_entry(), 0); zend_declare_property_null(php_http_env_request_class_entry, ZEND_STRL("query"), ZEND_ACC_PROTECTED TSRMLS_CC); zend_declare_property_null(php_http_env_request_class_entry, ZEND_STRL("form"), ZEND_ACC_PROTECTED TSRMLS_CC); zend_declare_property_null(php_http_env_request_class_entry, ZEND_STRL("files"), ZEND_ACC_PROTECTED TSRMLS_CC);