Skip to content

Commit 4867864

Browse files
simPodnikic
authored andcommitted
Add Curl ext PHP stubs
Closes GH-4557.
1 parent 3b2329d commit 4867864

File tree

6 files changed

+335
-166
lines changed

6 files changed

+335
-166
lines changed

ext/curl/curl.stub.php

Lines changed: 147 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,147 @@
1+
<?php
2+
3+
/** @param resource $handle */
4+
function curl_close($handle): void {}
5+
6+
/**
7+
* @param resource $handle
8+
*
9+
* @return resource|false
10+
*/
11+
function curl_copy_handle($handle) {}
12+
13+
/** @param resource $handle */
14+
function curl_errno($handle): int {}
15+
16+
/** @param resource $handle */
17+
function curl_error($handle): string {}
18+
19+
/**
20+
* @param resource $handle
21+
*
22+
* @return string|false
23+
*/
24+
function curl_escape($handle, string $string) {}
25+
26+
/**
27+
* @param resource $handle
28+
*
29+
* @return string|bool
30+
*/
31+
function curl_exec($handle) {}
32+
33+
function curl_file_create(
34+
string $filename,
35+
string $mimetype = UNKNOWN,
36+
string $postname = UNKNOWN
37+
): CURLFile {}
38+
39+
/**
40+
* @param resource $handle
41+
*
42+
* @return mixed
43+
*/
44+
function curl_getinfo($handle, int $option = UNKNOWN) {}
45+
46+
/**
47+
* @param resource $handle
48+
*
49+
* @return resource|false
50+
*/
51+
function curl_init(string $url = UNKNOWN) {}
52+
53+
/**
54+
* @param resource $multi_handle
55+
* @param resource $handle
56+
*/
57+
function curl_multi_add_handle($multi_handle, $handle): int {}
58+
59+
/** @param resource $multi_handle */
60+
function curl_multi_close($multi_handle): void {}
61+
62+
/**
63+
* @param resource $multi_handle
64+
*
65+
* @return int|false
66+
*/
67+
function curl_multi_errno($multi_handle): int {}
68+
69+
/** @param resource $multi_handle */
70+
function curl_multi_exec($multi_handle, &$still_running): int {}
71+
72+
/** @param resource $multi_handle */
73+
function curl_multi_getcontent($multi_handle): ?string {}
74+
75+
/**
76+
* @param resource $multi_handle
77+
*
78+
* @return array|false
79+
*/
80+
function curl_multi_info_read($multi_handle, &$msgs_in_queue = null) {}
81+
82+
/** @return resource */
83+
function curl_multi_init() {}
84+
85+
/**
86+
* @param resource $multi_handle
87+
* @param resource $handle
88+
*/
89+
function curl_multi_remove_handle($multi_handle, $handle): int {}
90+
91+
/** @param resource $multi_handle */
92+
function curl_multi_select($multi_handle, float $timeout = 1.0): int {}
93+
94+
/**
95+
* @param resource $multi_handle
96+
* @param mixed $value
97+
*/
98+
function curl_multi_setopt($multi_handle, int $option, $value): bool {}
99+
100+
function curl_multi_strerror(int $error_number): ?string {}
101+
102+
#if LIBCURL_VERSION_NUM >= 0x071200 /* 7.18.0 */
103+
/** @param resource $handle */
104+
function curl_pause($handle, int $bitmask): int {}
105+
#endif
106+
107+
/** @param resource $handle */
108+
function curl_reset($handle): void {}
109+
110+
/**
111+
* @param resource $handle
112+
* @param array<int, mixed> $options
113+
*/
114+
function curl_setopt_array($handle, array $options): bool {}
115+
116+
117+
/**
118+
* @param resource $handle
119+
* @param mixed $value
120+
*/
121+
function curl_setopt($handle, int $option, $value): bool {}
122+
123+
/** @param resource $share_handle */
124+
function curl_share_close($share_handle): void {}
125+
126+
/** @param resource $share_handle */
127+
function curl_share_errno($share_handle): int {}
128+
129+
/** @return resource */
130+
function curl_share_init() {}
131+
132+
/** @param resource $share_handle */
133+
function curl_share_setopt($share_handle, int $option, $value): bool {}
134+
135+
function curl_share_strerror(int $error_number): ?string {}
136+
137+
function curl_strerror(int $error_number): ?string {}
138+
139+
/**
140+
* @param resource $handle
141+
*
142+
* @return string|false
143+
*/
144+
function curl_unescape($handle, string $string) {}
145+
146+
/** @return array|false */
147+
function curl_version(int $age = UNKNOWN) {}

ext/curl/curl_arginfo.h

Lines changed: 132 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,132 @@
1+
/* This is a generated file, edit the .stub.php file instead. */
2+
3+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_curl_close, 0, 1, IS_VOID, 0)
4+
ZEND_ARG_INFO(0, handle)
5+
ZEND_END_ARG_INFO()
6+
7+
ZEND_BEGIN_ARG_INFO_EX(arginfo_curl_copy_handle, 0, 0, 1)
8+
ZEND_ARG_INFO(0, handle)
9+
ZEND_END_ARG_INFO()
10+
11+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_curl_errno, 0, 1, IS_LONG, 0)
12+
ZEND_ARG_INFO(0, handle)
13+
ZEND_END_ARG_INFO()
14+
15+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_curl_error, 0, 1, IS_STRING, 0)
16+
ZEND_ARG_INFO(0, handle)
17+
ZEND_END_ARG_INFO()
18+
19+
ZEND_BEGIN_ARG_INFO_EX(arginfo_curl_escape, 0, 0, 2)
20+
ZEND_ARG_INFO(0, handle)
21+
ZEND_ARG_TYPE_INFO(0, string, IS_STRING, 0)
22+
ZEND_END_ARG_INFO()
23+
24+
#define arginfo_curl_exec arginfo_curl_copy_handle
25+
26+
ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_curl_file_create, 0, 1, CURLFile, 0)
27+
ZEND_ARG_TYPE_INFO(0, filename, IS_STRING, 0)
28+
ZEND_ARG_TYPE_INFO(0, mimetype, IS_STRING, 0)
29+
ZEND_ARG_TYPE_INFO(0, postname, IS_STRING, 0)
30+
ZEND_END_ARG_INFO()
31+
32+
ZEND_BEGIN_ARG_INFO_EX(arginfo_curl_getinfo, 0, 0, 1)
33+
ZEND_ARG_INFO(0, handle)
34+
ZEND_ARG_TYPE_INFO(0, option, IS_LONG, 0)
35+
ZEND_END_ARG_INFO()
36+
37+
ZEND_BEGIN_ARG_INFO_EX(arginfo_curl_init, 0, 0, 0)
38+
ZEND_ARG_TYPE_INFO(0, url, IS_STRING, 0)
39+
ZEND_END_ARG_INFO()
40+
41+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_curl_multi_add_handle, 0, 2, IS_LONG, 0)
42+
ZEND_ARG_INFO(0, multi_handle)
43+
ZEND_ARG_INFO(0, handle)
44+
ZEND_END_ARG_INFO()
45+
46+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_curl_multi_close, 0, 1, IS_VOID, 0)
47+
ZEND_ARG_INFO(0, multi_handle)
48+
ZEND_END_ARG_INFO()
49+
50+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_curl_multi_errno, 0, 1, IS_LONG, 0)
51+
ZEND_ARG_INFO(0, multi_handle)
52+
ZEND_END_ARG_INFO()
53+
54+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_curl_multi_exec, 0, 2, IS_LONG, 0)
55+
ZEND_ARG_INFO(0, multi_handle)
56+
ZEND_ARG_INFO(1, still_running)
57+
ZEND_END_ARG_INFO()
58+
59+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_curl_multi_getcontent, 0, 1, IS_STRING, 1)
60+
ZEND_ARG_INFO(0, multi_handle)
61+
ZEND_END_ARG_INFO()
62+
63+
ZEND_BEGIN_ARG_INFO_EX(arginfo_curl_multi_info_read, 0, 0, 1)
64+
ZEND_ARG_INFO(0, multi_handle)
65+
ZEND_ARG_INFO(1, msgs_in_queue)
66+
ZEND_END_ARG_INFO()
67+
68+
ZEND_BEGIN_ARG_INFO_EX(arginfo_curl_multi_init, 0, 0, 0)
69+
ZEND_END_ARG_INFO()
70+
71+
#define arginfo_curl_multi_remove_handle arginfo_curl_multi_add_handle
72+
73+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_curl_multi_select, 0, 1, IS_LONG, 0)
74+
ZEND_ARG_INFO(0, multi_handle)
75+
ZEND_ARG_TYPE_INFO(0, timeout, IS_DOUBLE, 0)
76+
ZEND_END_ARG_INFO()
77+
78+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_curl_multi_setopt, 0, 3, _IS_BOOL, 0)
79+
ZEND_ARG_INFO(0, multi_handle)
80+
ZEND_ARG_TYPE_INFO(0, option, IS_LONG, 0)
81+
ZEND_ARG_INFO(0, value)
82+
ZEND_END_ARG_INFO()
83+
84+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_curl_multi_strerror, 0, 1, IS_STRING, 1)
85+
ZEND_ARG_TYPE_INFO(0, error_number, IS_LONG, 0)
86+
ZEND_END_ARG_INFO()
87+
88+
#if LIBCURL_VERSION_NUM >= 0x071200 /* 7.18.0 */
89+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_curl_pause, 0, 2, IS_LONG, 0)
90+
ZEND_ARG_INFO(0, handle)
91+
ZEND_ARG_TYPE_INFO(0, bitmask, IS_LONG, 0)
92+
ZEND_END_ARG_INFO()
93+
#endif
94+
95+
#define arginfo_curl_reset arginfo_curl_close
96+
97+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_curl_setopt_array, 0, 2, _IS_BOOL, 0)
98+
ZEND_ARG_INFO(0, handle)
99+
ZEND_ARG_TYPE_INFO(0, options, IS_ARRAY, 0)
100+
ZEND_END_ARG_INFO()
101+
102+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_curl_setopt, 0, 3, _IS_BOOL, 0)
103+
ZEND_ARG_INFO(0, handle)
104+
ZEND_ARG_TYPE_INFO(0, option, IS_LONG, 0)
105+
ZEND_ARG_INFO(0, value)
106+
ZEND_END_ARG_INFO()
107+
108+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_curl_share_close, 0, 1, IS_VOID, 0)
109+
ZEND_ARG_INFO(0, share_handle)
110+
ZEND_END_ARG_INFO()
111+
112+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_curl_share_errno, 0, 1, IS_LONG, 0)
113+
ZEND_ARG_INFO(0, share_handle)
114+
ZEND_END_ARG_INFO()
115+
116+
#define arginfo_curl_share_init arginfo_curl_multi_init
117+
118+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_curl_share_setopt, 0, 3, _IS_BOOL, 0)
119+
ZEND_ARG_INFO(0, share_handle)
120+
ZEND_ARG_TYPE_INFO(0, option, IS_LONG, 0)
121+
ZEND_ARG_INFO(0, value)
122+
ZEND_END_ARG_INFO()
123+
124+
#define arginfo_curl_share_strerror arginfo_curl_multi_strerror
125+
126+
#define arginfo_curl_strerror arginfo_curl_multi_strerror
127+
128+
#define arginfo_curl_unescape arginfo_curl_escape
129+
130+
ZEND_BEGIN_ARG_INFO_EX(arginfo_curl_version, 0, 0, 0)
131+
ZEND_ARG_TYPE_INFO(0, age, IS_LONG, 0)
132+
ZEND_END_ARG_INFO()

ext/curl/curl_file.c

Lines changed: 8 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@
2424
#include "Zend/zend_exceptions.h"
2525
#include "Zend/zend_interfaces.h"
2626
#include "php_curl.h"
27+
#include "curl_arginfo.h"
28+
#include "curl_file_arginfo.h"
2729
#if HAVE_CURL
2830

2931
PHP_CURL_API zend_class_entry *curl_CURLFile_class;
@@ -131,24 +133,13 @@ ZEND_METHOD(CURLFile, setPostFilename)
131133
}
132134
/* }}} */
133135

134-
ZEND_BEGIN_ARG_INFO_EX(arginfo_curlfile_create, 0, 0, 1)
135-
ZEND_ARG_INFO(0, filename)
136-
ZEND_ARG_INFO(0, mimetype)
137-
ZEND_ARG_INFO(0, postname)
138-
ZEND_END_ARG_INFO()
139-
140-
ZEND_BEGIN_ARG_INFO(arginfo_curlfile_name, 0)
141-
ZEND_ARG_INFO(0, name)
142-
ZEND_END_ARG_INFO()
143-
144-
145136
static const zend_function_entry curlfile_funcs[] = {
146-
PHP_ME(CURLFile, __construct, arginfo_curlfile_create, ZEND_ACC_PUBLIC)
147-
PHP_ME(CURLFile, getFilename, NULL, ZEND_ACC_PUBLIC)
148-
PHP_ME(CURLFile, getMimeType, NULL, ZEND_ACC_PUBLIC)
149-
PHP_ME(CURLFile, setMimeType, arginfo_curlfile_name, ZEND_ACC_PUBLIC)
150-
PHP_ME(CURLFile, getPostFilename, NULL, ZEND_ACC_PUBLIC)
151-
PHP_ME(CURLFile, setPostFilename, arginfo_curlfile_name, ZEND_ACC_PUBLIC)
137+
PHP_ME(CURLFile, __construct, arginfo_class_CURLFile___construct, ZEND_ACC_PUBLIC)
138+
PHP_ME(CURLFile, getFilename, arginfo_class_CURLFile_getFilename, ZEND_ACC_PUBLIC)
139+
PHP_ME(CURLFile, getMimeType, arginfo_class_CURLFile_getMimeType, ZEND_ACC_PUBLIC)
140+
PHP_ME(CURLFile, setMimeType, arginfo_class_CURLFile_setMimeType, ZEND_ACC_PUBLIC)
141+
PHP_ME(CURLFile, getPostFilename, arginfo_class_CURLFile_getPostFilename, ZEND_ACC_PUBLIC)
142+
PHP_ME(CURLFile, setPostFilename, arginfo_class_CURLFile_setPostFilename, ZEND_ACC_PUBLIC)
152143
PHP_FE_END
153144
};
154145

ext/curl/curl_file.stub.php

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<?php
2+
3+
class CURLFile {
4+
public function __construct(
5+
string $filename,
6+
string $mimetype = UNKNOWN,
7+
string $postname = UNKNOWN
8+
) {}
9+
10+
/** @return string */
11+
public function getFilename() {}
12+
13+
/** @return string */
14+
public function getMimeType() {}
15+
16+
/** @return string */
17+
public function getPostFilename() {}
18+
19+
/** @return void */
20+
public function setMimeType(string $mime) {}
21+
22+
/** @return void */
23+
public function setPostFilename(string $postname) {}
24+
}

ext/curl/curl_file_arginfo.h

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
/* This is a generated file, edit the .stub.php file instead. */
2+
3+
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_CURLFile___construct, 0, 0, 1)
4+
ZEND_ARG_TYPE_INFO(0, filename, IS_STRING, 0)
5+
ZEND_ARG_TYPE_INFO(0, mimetype, IS_STRING, 0)
6+
ZEND_ARG_TYPE_INFO(0, postname, IS_STRING, 0)
7+
ZEND_END_ARG_INFO()
8+
9+
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_CURLFile_getFilename, 0, 0, 0)
10+
ZEND_END_ARG_INFO()
11+
12+
#define arginfo_class_CURLFile_getMimeType arginfo_class_CURLFile_getFilename
13+
14+
#define arginfo_class_CURLFile_getPostFilename arginfo_class_CURLFile_getFilename
15+
16+
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_CURLFile_setMimeType, 0, 0, 1)
17+
ZEND_ARG_TYPE_INFO(0, mime, IS_STRING, 0)
18+
ZEND_END_ARG_INFO()
19+
20+
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_CURLFile_setPostFilename, 0, 0, 1)
21+
ZEND_ARG_TYPE_INFO(0, postname, IS_STRING, 0)
22+
ZEND_END_ARG_INFO()

0 commit comments

Comments
 (0)