X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=php_http_misc.c;h=3ad9988955f279ff8e366d398ec41d5d41c2036e;hb=1bcceb6d155dfed7e352f9559974527787d1ae97;hp=f14354abfab28291799129062f97f8a46553d108;hpb=7b028d0cbb030f9610084314f67b77907d8474a2;p=m6w6%2Fext-http diff --git a/php_http_misc.c b/php_http_misc.c index f14354a..3ad9988 100644 --- a/php_http_misc.c +++ b/php_http_misc.c @@ -6,7 +6,7 @@ | modification, are permitted provided that the conditions mentioned | | in the accompanying LICENSE file are met. | +--------------------------------------------------------------------+ - | Copyright (c) 2004-2011, Michael Wallner | + | Copyright (c) 2004-2013, Michael Wallner | +--------------------------------------------------------------------+ */ @@ -253,7 +253,7 @@ static inline int scope_error_handling(long type TSRMLS_DC) return EH_THROW; } - if (EG(This) && instanceof_function(Z_OBJCE_P(EG(This)), php_http_object_get_class_entry() TSRMLS_CC)) { + if (EG(This) && instanceof_function(Z_OBJCE_P(EG(This)), php_http_object_class_entry TSRMLS_CC)) { return php_http_object_get_error_handling(EG(This) TSRMLS_CC); } @@ -268,7 +268,7 @@ void php_http_error(long type TSRMLS_DC, long code, const char *format, ...) switch (scope_error_handling(type TSRMLS_CC)) { case EH_THROW: { char *message; - zend_class_entry *ce = php_http_exception_get_class_entry(); + zend_class_entry *ce = php_http_exception_class_entry; /* FIXME wat? */ if (0&& EG(exception_class) && instanceof_function(EG(exception_class), ce TSRMLS_CC)) { @@ -289,6 +289,34 @@ void php_http_error(long type TSRMLS_DC, long code, const char *format, ...) va_end(args); } +/* ZEND */ + +STATUS php_http_method_call(zval *object, const char *method_str, size_t method_len, int argc, zval **argv[], zval **retval_ptr TSRMLS_DC) +{ + zend_fcall_info fci; + zval zmethod; + zval *retval; + STATUS rv; + + fci.size = sizeof(fci); + fci.object_ptr = object; + fci.function_name = &zmethod; + fci.retval_ptr_ptr = retval_ptr ? retval_ptr : &retval; + fci.param_count = argc; + fci.params = argv; + fci.no_separation = 1; + fci.symbol_table = NULL; + fci.function_table = NULL; + + INIT_PZVAL(&zmethod); + ZVAL_STRINGL(&zmethod, method_str, method_len, 0); + rv = zend_call_function(&fci, NULL TSRMLS_CC); + + if (!retval_ptr && retval) { + zval_ptr_dtor(&retval); + } + return rv; +} /* * Local variables: * tab-width: 4