diff options
Diffstat (limited to 'ext/curl/curl_file.c')
-rw-r--r-- | ext/curl/curl_file.c | 33 |
1 files changed, 27 insertions, 6 deletions
diff --git a/ext/curl/curl_file.c b/ext/curl/curl_file.c index aad162604a..a8f8a793b2 100644 --- a/ext/curl/curl_file.c +++ b/ext/curl/curl_file.c @@ -25,6 +25,7 @@ #include "curl_file_arginfo.h" PHP_CURL_API zend_class_entry *curl_CURLFile_class; +PHP_CURL_API zend_class_entry *curl_CURLStringFile_class; static void curlfile_ctor(INTERNAL_FUNCTION_PARAMETERS) { @@ -120,14 +121,34 @@ ZEND_METHOD(CURLFile, setPostFilename) } /* }}} */ +ZEND_METHOD(CURLStringFile, __construct) +{ + zend_string *data, *postname, *mime = NULL; + zval *object; + + object = ZEND_THIS; + + ZEND_PARSE_PARAMETERS_START(2,3) + Z_PARAM_STR(data) + Z_PARAM_STR(postname) + Z_PARAM_OPTIONAL + Z_PARAM_STR(mime) + ZEND_PARSE_PARAMETERS_END(); + + zend_update_property_str(curl_CURLStringFile_class, Z_OBJ_P(object), "data", sizeof("data") - 1, data); + zend_update_property_str(curl_CURLStringFile_class, Z_OBJ_P(object), "postname", sizeof("postname")-1, postname); + if (mime) { + zend_update_property_str(curl_CURLStringFile_class, Z_OBJ_P(object), "mime", sizeof("mime")-1, mime); + } else { + zend_update_property_string(curl_CURLStringFile_class, Z_OBJ_P(object), "mime", sizeof("mime")-1, "application/octet-stream"); + } +} + void curlfile_register_class(void) { - zend_class_entry ce; - INIT_CLASS_ENTRY( ce, "CURLFile", class_CURLFile_methods ); - curl_CURLFile_class = zend_register_internal_class(&ce); + curl_CURLFile_class = register_class_CURLFile(); curl_CURLFile_class->serialize = zend_class_serialize_deny; curl_CURLFile_class->unserialize = zend_class_unserialize_deny; - zend_declare_property_string(curl_CURLFile_class, "name", sizeof("name")-1, "", ZEND_ACC_PUBLIC); - zend_declare_property_string(curl_CURLFile_class, "mime", sizeof("mime")-1, "", ZEND_ACC_PUBLIC); - zend_declare_property_string(curl_CURLFile_class, "postname", sizeof("postname")-1, "", ZEND_ACC_PUBLIC); + + curl_CURLStringFile_class = register_class_CURLStringFile(); } |