- if (global) {
-#ifdef ZEND_ENGINE_2
- zend_is_auto_global("_SERVER", lenof("_SERVER") TSRMLS_CC);
-#endif
- if ( (SUCCESS == zend_hash_find(&EG(symbol_table), "_SERVER", sizeof("_SERVER"), (void *) &_SERVER)) &&
- (Z_TYPE_PP(_SERVER) == IS_ARRAY) &&
- (SUCCESS == zend_hash_find(Z_ARRVAL_PP(_SERVER), "QUERY_STRING", sizeof("QUERY_STRING"), (void *) &QUERY_STRING))) {
-
- qstring = *QUERY_STRING;
-#ifdef ZEND_ENGINE_2
- zend_is_auto_global("_GET", lenof("_GET") TSRMLS_CC);
-#endif
- if ((SUCCESS == zend_hash_find(&EG(symbol_table), "_GET", sizeof("_GET"), (void *) &_GET)) && (Z_TYPE_PP(_GET) == IS_ARRAY)) {
- qarray = *_GET;
- } else {
- http_error(HE_WARNING, HTTP_E_QUERYSTRING, "Could not acquire reference to superglobal GET array");
- }
- } else {
- http_error(HE_WARNING, HTTP_E_QUERYSTRING, "Could not acquire reference to QUERY_STRING");
- }
-
- if (qarray && qstring) {
- if (Z_TYPE_P(qstring) != IS_STRING) {
- convert_to_string(qstring);
- }
-
- SET_PROP(queryArray, qarray);
- SET_PROP(queryString, qstring);
- GET_PROP(queryArray)->is_ref = 1;
- GET_PROP(queryString)->is_ref = 1;
-
- if (params) {
- http_querystring_modify(GET_PROP(queryArray), params);
- }
- http_querystring_update(GET_PROP(queryArray), GET_PROP(queryString));
- }
- } else {
- qarray = ecalloc(1, sizeof(zval));
- array_init(qarray);
-
- SET_PROP(queryArray, qarray);
- UPD_STRL(queryString, "", 0);
-
- if (params && http_querystring_modify(qarray, params)) {
- http_querystring_update(qarray, GET_PROP(queryString));
- }
- }
+ http_querystring_instantiate(getThis(), global, params, 0);
+ }
+ SET_EH_NORMAL();
+}
+/* }}} */
+
+/* {{{ proto HttpQueryString HttpQueryString::factory([bool global = TRUE[, mixed params[, string class_name = "HttpQueryString"])
+ Creates a new HttpQueryString object instance. */
+PHP_METHOD(HttpQueryString, factory)
+{
+ zend_bool global = 1;
+ zval *params = NULL;
+ char *cn = NULL;
+ int cl = 0;
+ zend_object_value ov;
+
+ SET_EH_THROW_HTTP();
+ if (!sapi_module.treat_data) {
+ http_error(HE_ERROR, HTTP_E_QUERYSTRING, "The SAPI does not have a treat_data function registered");
+ } else if ( SUCCESS == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|bzs", &global, ¶ms, &cn, &cl) &&
+ SUCCESS == http_object_new(&ov, cn, cl, _http_querystring_object_new_ex, http_querystring_object_ce, NULL, NULL)) {
+ RETVAL_OBJVAL(ov, 0);
+ http_querystring_instantiate(return_value, global, params, 0);