X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=php_http_env_request.c;h=701e9fda8f1f08dd88a4207d7e2f775e348e5485;hp=c11f730bcbe31a1b4498adb2ab05f7eea3256d2a;hb=729594cae203b09419d195ec0dabde0430c9f1cd;hpb=14aec371d6123fbedbe13ca73b6a6d5768c635cb diff --git a/php_http_env_request.c b/php_http_env_request.c index c11f730..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) @@ -22,13 +20,20 @@ zend_class_entry *php_http_env_request_class_entry; #define PHP_HTTP_ENV_REQUEST_ME(method, visibility) PHP_ME(HttpEnvRequest, method, PHP_HTTP_ARGS(HttpEnvRequest, method), visibility) PHP_HTTP_EMPTY_ARGS(__construct); -PHP_HTTP_EMPTY_ARGS(getPost); +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(getPost, ZEND_ACC_PUBLIC) + PHP_HTTP_ENV_REQUEST_ME(getForm, ZEND_ACC_PUBLIC) PHP_HTTP_ENV_REQUEST_ME(getQuery, ZEND_ACC_PUBLIC) PHP_HTTP_ENV_REQUEST_ME(getFiles, ZEND_ACC_PUBLIC) @@ -119,48 +124,46 @@ 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); - } + 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("post"), zpost TSRMLS_CC); - } + 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); + 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(); } -PHP_METHOD(HttpEnvRequest, getPost) +PHP_METHOD(HttpEnvRequest, getForm) { if (SUCCESS == zend_parse_parameters_none()) { - RETURN_PROP(php_http_env_request_class_entry, "post"); + RETURN_PROP(php_http_env_request_class_entry, "form"); } } @@ -181,9 +184,9 @@ 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("post"), 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); return SUCCESS;