summaryrefslogtreecommitdiff
path: root/ext/curl
diff options
context:
space:
mode:
authorMáté Kocsis <kocsismate@woohoolabs.com>2021-01-26 11:50:36 +0100
committerMáté Kocsis <kocsismate@woohoolabs.com>2021-01-26 11:50:36 +0100
commit1954e5975846b3952ce1d2d6506e6d7134c89684 (patch)
treedb386159cd317fce6f5f2d04fefd45b70244368f /ext/curl
parent4414fd93d06490e726dc04814ba412822170b712 (diff)
downloadphp-git-1954e5975846b3952ce1d2d6506e6d7134c89684.tar.gz
Add support for generating class entries from stubs
Closes GH-6289 Co-authored-by: Nikita Popov <nikita.ppv@gmail.com>
Diffstat (limited to 'ext/curl')
-rw-r--r--ext/curl/curl_file.c7
-rw-r--r--ext/curl/curl_file.stub.php12
-rw-r--r--ext/curl/curl_file_arginfo.h31
3 files changed, 42 insertions, 8 deletions
diff --git a/ext/curl/curl_file.c b/ext/curl/curl_file.c
index aad162604a..a81239a60a 100644
--- a/ext/curl/curl_file.c
+++ b/ext/curl/curl_file.c
@@ -122,12 +122,7 @@ ZEND_METHOD(CURLFile, setPostFilename)
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);
}
diff --git a/ext/curl/curl_file.stub.php b/ext/curl/curl_file.stub.php
index 28a218c698..7b0c83aa2f 100644
--- a/ext/curl/curl_file.stub.php
+++ b/ext/curl/curl_file.stub.php
@@ -1,9 +1,19 @@
<?php
-/** @generate-function-entries */
+/**
+ * @generate-function-entries
+ * @generate-class-entries
+ */
class CURLFile
{
+ /** @var string */
+ public $name = "";
+ /** @var string */
+ public $mime = "";
+ /** @var string */
+ public $postname = "";
+
public function __construct(string $filename, ?string $mime_type = null, ?string $posted_filename = null) {}
/** @return string */
diff --git a/ext/curl/curl_file_arginfo.h b/ext/curl/curl_file_arginfo.h
index c745d597da..47be45ac95 100644
--- a/ext/curl/curl_file_arginfo.h
+++ b/ext/curl/curl_file_arginfo.h
@@ -1,5 +1,5 @@
/* This is a generated file, edit the .stub.php file instead.
- * Stub hash: a81720edab23748f6dce30306f5a5ffc9634da5d */
+ * Stub hash: 4cdab686b39e7c4bb03bd5517a637ff25a38b04a */
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_CURLFile___construct, 0, 0, 1)
ZEND_ARG_TYPE_INFO(0, filename, IS_STRING, 0)
@@ -40,3 +40,32 @@ static const zend_function_entry class_CURLFile_methods[] = {
ZEND_ME(CURLFile, setPostFilename, arginfo_class_CURLFile_setPostFilename, ZEND_ACC_PUBLIC)
ZEND_FE_END
};
+
+zend_class_entry *register_class_CURLFile()
+{
+ zend_class_entry ce, *class_entry;
+
+ INIT_CLASS_ENTRY(ce, "CURLFile", class_CURLFile_methods);
+ class_entry = zend_register_internal_class_ex(&ce, NULL);
+
+ zval property_name_default_value;
+ ZVAL_EMPTY_STRING(&property_name_default_value);
+ zend_string *property_name_name = zend_string_init("name", sizeof("name") - 1, 1);
+ zend_declare_property_ex(class_entry, property_name_name, &property_name_default_value, ZEND_ACC_PUBLIC, NULL);
+ zend_string_release(property_name_name);
+
+ zval property_mime_default_value;
+ ZVAL_EMPTY_STRING(&property_mime_default_value);
+ zend_string *property_mime_name = zend_string_init("mime", sizeof("mime") - 1, 1);
+ zend_declare_property_ex(class_entry, property_mime_name, &property_mime_default_value, ZEND_ACC_PUBLIC, NULL);
+ zend_string_release(property_mime_name);
+
+ zval property_postname_default_value;
+ ZVAL_EMPTY_STRING(&property_postname_default_value);
+ zend_string *property_postname_name = zend_string_init("postname", sizeof("postname") - 1, 1);
+ zend_declare_property_ex(class_entry, property_postname_name, &property_postname_default_value, ZEND_ACC_PUBLIC, NULL);
+ zend_string_release(property_postname_name);
+
+ return class_entry;
+}
+