2 +--------------------------------------------------------------------+
4 +--------------------------------------------------------------------+
5 | Redistribution and use in source and binary forms, with or without |
6 | modification, are permitted provided that the conditions mentioned |
7 | in the accompanying LICENSE file are met. |
8 +--------------------------------------------------------------------+
9 | Copyright (c) 2004-2014, Michael Wallner <mike@php.net> |
10 +--------------------------------------------------------------------+
13 #include "php_http_api.h"
15 zend_object
*php_http_object_new(zend_class_entry
*ce
)
17 return &php_http_object_new_ex(ce
, NULL
)->zo
;
20 php_http_object_t
*php_http_object_new_ex(zend_class_entry
*ce
, void *intern
)
24 o
= ecalloc(1, sizeof(php_http_object_t
) + (ce
->default_properties_count
- 1) * sizeof(zval
));
25 zend_object_std_init(&o
->zo
, ce
);
26 object_properties_init(&o
->zo
, ce
);
29 o
->zo
.handlers
= zend_get_std_object_handlers();
34 ZEND_RESULT_CODE
php_http_new(void **obj_ptr
, zend_class_entry
*ce
, php_http_new_t create
, zend_class_entry
*parent_ce
, void *intern_ptr
)
40 } else if (parent_ce
&& !instanceof_function(ce
, parent_ce
)) {
41 php_http_throw(unexpected_val
, "Class %s does not extend %s", ce
->name
->val
, parent_ce
->name
->val
);
45 obj
= create(ce
, intern_ptr
);
52 ZEND_RESULT_CODE
php_http_method_call(zval
*object
, const char *method_str
, size_t method_len
, int argc
, zval argv
[], zval
*retval_ptr
)
59 fci
.size
= sizeof(fci
);
60 fci
.object
= Z_OBJ_P(object
);
61 fci
.retval
= retval_ptr
? retval_ptr
: &retval
;
62 fci
.param_count
= argc
;
64 fci
.no_separation
= 1;
65 fci
.symbol_table
= NULL
;
66 fci
.function_table
= NULL
;
68 ZVAL_STRINGL(&fci
.function_name
, method_str
, method_len
);
69 rv
= zend_call_function(&fci
, NULL TSRMLS_CC
);
70 zval_ptr_dtor(&fci
.function_name
);
73 zval_ptr_dtor(&retval
);
83 * vim600: noet sw=4 ts=4 fdm=marker
84 * vim<600: noet sw=4 ts=4