Skip to content

Commit c5ffa0a

Browse files
authored
Declare ext/json constants in stubs (#8716)
1 parent 7c2d1fd commit c5ffa0a

File tree

3 files changed

+184
-41
lines changed

3 files changed

+184
-41
lines changed

ext/json/json.c

Lines changed: 1 addition & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -37,53 +37,14 @@ PHP_JSON_API zend_class_entry *php_json_exception_ce;
3737

3838
PHP_JSON_API ZEND_DECLARE_MODULE_GLOBALS(json)
3939

40-
/* Register constant for options and errors */
41-
#define PHP_JSON_REGISTER_CONSTANT(_name, _value) \
42-
REGISTER_LONG_CONSTANT(_name, _value, CONST_CS | CONST_PERSISTENT);
43-
4440
/* {{{ MINIT */
4541
static PHP_MINIT_FUNCTION(json)
4642
{
4743
php_json_serializable_ce = register_class_JsonSerializable();
4844

4945
php_json_exception_ce = register_class_JsonException(zend_ce_exception);
5046

51-
/* options for json_encode */
52-
PHP_JSON_REGISTER_CONSTANT("JSON_HEX_TAG", PHP_JSON_HEX_TAG);
53-
PHP_JSON_REGISTER_CONSTANT("JSON_HEX_AMP", PHP_JSON_HEX_AMP);
54-
PHP_JSON_REGISTER_CONSTANT("JSON_HEX_APOS", PHP_JSON_HEX_APOS);
55-
PHP_JSON_REGISTER_CONSTANT("JSON_HEX_QUOT", PHP_JSON_HEX_QUOT);
56-
PHP_JSON_REGISTER_CONSTANT("JSON_FORCE_OBJECT", PHP_JSON_FORCE_OBJECT);
57-
PHP_JSON_REGISTER_CONSTANT("JSON_NUMERIC_CHECK", PHP_JSON_NUMERIC_CHECK);
58-
PHP_JSON_REGISTER_CONSTANT("JSON_UNESCAPED_SLASHES", PHP_JSON_UNESCAPED_SLASHES);
59-
PHP_JSON_REGISTER_CONSTANT("JSON_PRETTY_PRINT", PHP_JSON_PRETTY_PRINT);
60-
PHP_JSON_REGISTER_CONSTANT("JSON_UNESCAPED_UNICODE", PHP_JSON_UNESCAPED_UNICODE);
61-
PHP_JSON_REGISTER_CONSTANT("JSON_PARTIAL_OUTPUT_ON_ERROR", PHP_JSON_PARTIAL_OUTPUT_ON_ERROR);
62-
PHP_JSON_REGISTER_CONSTANT("JSON_PRESERVE_ZERO_FRACTION", PHP_JSON_PRESERVE_ZERO_FRACTION);
63-
PHP_JSON_REGISTER_CONSTANT("JSON_UNESCAPED_LINE_TERMINATORS", PHP_JSON_UNESCAPED_LINE_TERMINATORS);
64-
65-
/* options for json_decode */
66-
PHP_JSON_REGISTER_CONSTANT("JSON_OBJECT_AS_ARRAY", PHP_JSON_OBJECT_AS_ARRAY);
67-
PHP_JSON_REGISTER_CONSTANT("JSON_BIGINT_AS_STRING", PHP_JSON_BIGINT_AS_STRING);
68-
69-
/* common options for json_decode and json_encode */
70-
PHP_JSON_REGISTER_CONSTANT("JSON_INVALID_UTF8_IGNORE", PHP_JSON_INVALID_UTF8_IGNORE);
71-
PHP_JSON_REGISTER_CONSTANT("JSON_INVALID_UTF8_SUBSTITUTE", PHP_JSON_INVALID_UTF8_SUBSTITUTE);
72-
PHP_JSON_REGISTER_CONSTANT("JSON_THROW_ON_ERROR", PHP_JSON_THROW_ON_ERROR);
73-
74-
/* json error constants */
75-
PHP_JSON_REGISTER_CONSTANT("JSON_ERROR_NONE", PHP_JSON_ERROR_NONE);
76-
PHP_JSON_REGISTER_CONSTANT("JSON_ERROR_DEPTH", PHP_JSON_ERROR_DEPTH);
77-
PHP_JSON_REGISTER_CONSTANT("JSON_ERROR_STATE_MISMATCH", PHP_JSON_ERROR_STATE_MISMATCH);
78-
PHP_JSON_REGISTER_CONSTANT("JSON_ERROR_CTRL_CHAR", PHP_JSON_ERROR_CTRL_CHAR);
79-
PHP_JSON_REGISTER_CONSTANT("JSON_ERROR_SYNTAX", PHP_JSON_ERROR_SYNTAX);
80-
PHP_JSON_REGISTER_CONSTANT("JSON_ERROR_UTF8", PHP_JSON_ERROR_UTF8);
81-
PHP_JSON_REGISTER_CONSTANT("JSON_ERROR_RECURSION", PHP_JSON_ERROR_RECURSION);
82-
PHP_JSON_REGISTER_CONSTANT("JSON_ERROR_INF_OR_NAN", PHP_JSON_ERROR_INF_OR_NAN);
83-
PHP_JSON_REGISTER_CONSTANT("JSON_ERROR_UNSUPPORTED_TYPE", PHP_JSON_ERROR_UNSUPPORTED_TYPE);
84-
PHP_JSON_REGISTER_CONSTANT("JSON_ERROR_INVALID_PROPERTY_NAME", PHP_JSON_ERROR_INVALID_PROPERTY_NAME);
85-
PHP_JSON_REGISTER_CONSTANT("JSON_ERROR_UTF16", PHP_JSON_ERROR_UTF16);
86-
PHP_JSON_REGISTER_CONSTANT("JSON_ERROR_NON_BACKED_ENUM", PHP_JSON_ERROR_NON_BACKED_ENUM);
47+
register_json_symbols(module_number);
8748

8849
return SUCCESS;
8950
}

ext/json/json.stub.php

Lines changed: 149 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,155 @@
22

33
/** @generate-class-entries */
44

5+
/**
6+
* @var int
7+
* @cname PHP_JSON_HEX_TAG
8+
*/
9+
const JSON_HEX_TAG = UNKNOWN;
10+
/**
11+
* @var int
12+
* @cname PHP_JSON_HEX_AMP
13+
*/
14+
const JSON_HEX_AMP = UNKNOWN;
15+
/**
16+
* @var int
17+
* @cname PHP_JSON_HEX_APOS
18+
*/
19+
const JSON_HEX_APOS = UNKNOWN;
20+
/**
21+
* @var int
22+
* @cname PHP_JSON_HEX_QUOT
23+
*/
24+
const JSON_HEX_QUOT = UNKNOWN;
25+
/**
26+
* @var int
27+
* @cname PHP_JSON_FORCE_OBJECT
28+
*/
29+
const JSON_FORCE_OBJECT = UNKNOWN;
30+
/**
31+
* @var int
32+
* @cname PHP_JSON_NUMERIC_CHECK
33+
*/
34+
const JSON_NUMERIC_CHECK = UNKNOWN;
35+
/**
36+
* @var int
37+
* @cname PHP_JSON_UNESCAPED_SLASHES
38+
*/
39+
const JSON_UNESCAPED_SLASHES = UNKNOWN;
40+
/**
41+
* @var int
42+
* @cname PHP_JSON_PRETTY_PRINT
43+
*/
44+
const JSON_PRETTY_PRINT = UNKNOWN;
45+
/**
46+
* @var int
47+
* @cname PHP_JSON_UNESCAPED_UNICODE
48+
*/
49+
const JSON_UNESCAPED_UNICODE = UNKNOWN;
50+
/**
51+
* @var int
52+
* @cname PHP_JSON_PARTIAL_OUTPUT_ON_ERROR
53+
*/
54+
const JSON_PARTIAL_OUTPUT_ON_ERROR = UNKNOWN;
55+
/**
56+
* @var int
57+
* @cname PHP_JSON_PRESERVE_ZERO_FRACTION
58+
*/
59+
const JSON_PRESERVE_ZERO_FRACTION = UNKNOWN;
60+
/**
61+
* @var int
62+
* @cname PHP_JSON_UNESCAPED_LINE_TERMINATORS
63+
*/
64+
const JSON_UNESCAPED_LINE_TERMINATORS = UNKNOWN;
65+
66+
/**
67+
* @var int
68+
* @cname PHP_JSON_OBJECT_AS_ARRAY
69+
*/
70+
const JSON_OBJECT_AS_ARRAY = UNKNOWN;
71+
/**
72+
* @var int
73+
* @cname PHP_JSON_BIGINT_AS_STRING
74+
*/
75+
const JSON_BIGINT_AS_STRING = UNKNOWN;
76+
77+
/**
78+
* @var int
79+
* @cname PHP_JSON_INVALID_UTF8_IGNORE
80+
*/
81+
const JSON_INVALID_UTF8_IGNORE = UNKNOWN;
82+
/**
83+
* @var int
84+
* @cname PHP_JSON_INVALID_UTF8_SUBSTITUTE
85+
*/
86+
const JSON_INVALID_UTF8_SUBSTITUTE = UNKNOWN;
87+
/**
88+
* @var int
89+
* @cname PHP_JSON_THROW_ON_ERROR
90+
*/
91+
const JSON_THROW_ON_ERROR = UNKNOWN;
92+
93+
/**
94+
* @var int
95+
* @cname PHP_JSON_ERROR_NONE
96+
*/
97+
const JSON_ERROR_NONE = UNKNOWN;
98+
/**
99+
* @var int
100+
* @cname PHP_JSON_ERROR_DEPTH
101+
*/
102+
const JSON_ERROR_DEPTH = UNKNOWN;
103+
/**
104+
* @var int
105+
* @cname PHP_JSON_ERROR_STATE_MISMATCH
106+
*/
107+
const JSON_ERROR_STATE_MISMATCH = UNKNOWN;
108+
/**
109+
* @var int
110+
* @cname PHP_JSON_ERROR_CTRL_CHAR
111+
*/
112+
const JSON_ERROR_CTRL_CHAR = UNKNOWN;
113+
/**
114+
* @var int
115+
* @cname PHP_JSON_ERROR_SYNTAX
116+
*/
117+
const JSON_ERROR_SYNTAX = UNKNOWN;
118+
/**
119+
* @var int
120+
* @cname PHP_JSON_ERROR_UTF8
121+
*/
122+
const JSON_ERROR_UTF8 = UNKNOWN;
123+
/**
124+
* @var int
125+
* @cname PHP_JSON_ERROR_RECURSION
126+
*/
127+
const JSON_ERROR_RECURSION = UNKNOWN;
128+
/**
129+
* @var int
130+
* @cname PHP_JSON_ERROR_INF_OR_NAN
131+
*/
132+
const JSON_ERROR_INF_OR_NAN = UNKNOWN;
133+
/**
134+
* @var int
135+
* @cname PHP_JSON_ERROR_UNSUPPORTED_TYPE
136+
*/
137+
const JSON_ERROR_UNSUPPORTED_TYPE = UNKNOWN;
138+
/**
139+
* @var int
140+
* @cname PHP_JSON_ERROR_INVALID_PROPERTY_NAME
141+
*/
142+
const JSON_ERROR_INVALID_PROPERTY_NAME = UNKNOWN;
143+
/**
144+
* @var int
145+
* @cname PHP_JSON_ERROR_UTF16
146+
*/
147+
const JSON_ERROR_UTF16 = UNKNOWN;
148+
/**
149+
* @var int
150+
* @cname PHP_JSON_ERROR_NON_BACKED_ENUM
151+
*/
152+
const JSON_ERROR_NON_BACKED_ENUM = UNKNOWN;
153+
5154
/** @refcount 1 */
6155
function json_encode(mixed $value, int $flags = 0, int $depth = 512): string|false {}
7156

ext/json/json_arginfo.h

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/* This is a generated file, edit the .stub.php file instead.
2-
* Stub hash: e59995a9cd647f36164468dd2ae4c11239e3405f */
2+
* Stub hash: 6ff8c3c3f815a7ba887d2fc5e76285925c7fed90 */
33

44
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_json_encode, 0, 1, MAY_BE_STRING|MAY_BE_FALSE)
55
ZEND_ARG_TYPE_INFO(0, value, IS_MIXED, 0)
@@ -49,6 +49,39 @@ static const zend_function_entry class_JsonException_methods[] = {
4949
ZEND_FE_END
5050
};
5151

52+
static void register_json_symbols(int module_number)
53+
{
54+
REGISTER_LONG_CONSTANT("JSON_HEX_TAG", PHP_JSON_HEX_TAG, CONST_CS | CONST_PERSISTENT);
55+
REGISTER_LONG_CONSTANT("JSON_HEX_AMP", PHP_JSON_HEX_AMP, CONST_CS | CONST_PERSISTENT);
56+
REGISTER_LONG_CONSTANT("JSON_HEX_APOS", PHP_JSON_HEX_APOS, CONST_CS | CONST_PERSISTENT);
57+
REGISTER_LONG_CONSTANT("JSON_HEX_QUOT", PHP_JSON_HEX_QUOT, CONST_CS | CONST_PERSISTENT);
58+
REGISTER_LONG_CONSTANT("JSON_FORCE_OBJECT", PHP_JSON_FORCE_OBJECT, CONST_CS | CONST_PERSISTENT);
59+
REGISTER_LONG_CONSTANT("JSON_NUMERIC_CHECK", PHP_JSON_NUMERIC_CHECK, CONST_CS | CONST_PERSISTENT);
60+
REGISTER_LONG_CONSTANT("JSON_UNESCAPED_SLASHES", PHP_JSON_UNESCAPED_SLASHES, CONST_CS | CONST_PERSISTENT);
61+
REGISTER_LONG_CONSTANT("JSON_PRETTY_PRINT", PHP_JSON_PRETTY_PRINT, CONST_CS | CONST_PERSISTENT);
62+
REGISTER_LONG_CONSTANT("JSON_UNESCAPED_UNICODE", PHP_JSON_UNESCAPED_UNICODE, CONST_CS | CONST_PERSISTENT);
63+
REGISTER_LONG_CONSTANT("JSON_PARTIAL_OUTPUT_ON_ERROR", PHP_JSON_PARTIAL_OUTPUT_ON_ERROR, CONST_CS | CONST_PERSISTENT);
64+
REGISTER_LONG_CONSTANT("JSON_PRESERVE_ZERO_FRACTION", PHP_JSON_PRESERVE_ZERO_FRACTION, CONST_CS | CONST_PERSISTENT);
65+
REGISTER_LONG_CONSTANT("JSON_UNESCAPED_LINE_TERMINATORS", PHP_JSON_UNESCAPED_LINE_TERMINATORS, CONST_CS | CONST_PERSISTENT);
66+
REGISTER_LONG_CONSTANT("JSON_OBJECT_AS_ARRAY", PHP_JSON_OBJECT_AS_ARRAY, CONST_CS | CONST_PERSISTENT);
67+
REGISTER_LONG_CONSTANT("JSON_BIGINT_AS_STRING", PHP_JSON_BIGINT_AS_STRING, CONST_CS | CONST_PERSISTENT);
68+
REGISTER_LONG_CONSTANT("JSON_INVALID_UTF8_IGNORE", PHP_JSON_INVALID_UTF8_IGNORE, CONST_CS | CONST_PERSISTENT);
69+
REGISTER_LONG_CONSTANT("JSON_INVALID_UTF8_SUBSTITUTE", PHP_JSON_INVALID_UTF8_SUBSTITUTE, CONST_CS | CONST_PERSISTENT);
70+
REGISTER_LONG_CONSTANT("JSON_THROW_ON_ERROR", PHP_JSON_THROW_ON_ERROR, CONST_CS | CONST_PERSISTENT);
71+
REGISTER_LONG_CONSTANT("JSON_ERROR_NONE", PHP_JSON_ERROR_NONE, CONST_CS | CONST_PERSISTENT);
72+
REGISTER_LONG_CONSTANT("JSON_ERROR_DEPTH", PHP_JSON_ERROR_DEPTH, CONST_CS | CONST_PERSISTENT);
73+
REGISTER_LONG_CONSTANT("JSON_ERROR_STATE_MISMATCH", PHP_JSON_ERROR_STATE_MISMATCH, CONST_CS | CONST_PERSISTENT);
74+
REGISTER_LONG_CONSTANT("JSON_ERROR_CTRL_CHAR", PHP_JSON_ERROR_CTRL_CHAR, CONST_CS | CONST_PERSISTENT);
75+
REGISTER_LONG_CONSTANT("JSON_ERROR_SYNTAX", PHP_JSON_ERROR_SYNTAX, CONST_CS | CONST_PERSISTENT);
76+
REGISTER_LONG_CONSTANT("JSON_ERROR_UTF8", PHP_JSON_ERROR_UTF8, CONST_CS | CONST_PERSISTENT);
77+
REGISTER_LONG_CONSTANT("JSON_ERROR_RECURSION", PHP_JSON_ERROR_RECURSION, CONST_CS | CONST_PERSISTENT);
78+
REGISTER_LONG_CONSTANT("JSON_ERROR_INF_OR_NAN", PHP_JSON_ERROR_INF_OR_NAN, CONST_CS | CONST_PERSISTENT);
79+
REGISTER_LONG_CONSTANT("JSON_ERROR_UNSUPPORTED_TYPE", PHP_JSON_ERROR_UNSUPPORTED_TYPE, CONST_CS | CONST_PERSISTENT);
80+
REGISTER_LONG_CONSTANT("JSON_ERROR_INVALID_PROPERTY_NAME", PHP_JSON_ERROR_INVALID_PROPERTY_NAME, CONST_CS | CONST_PERSISTENT);
81+
REGISTER_LONG_CONSTANT("JSON_ERROR_UTF16", PHP_JSON_ERROR_UTF16, CONST_CS | CONST_PERSISTENT);
82+
REGISTER_LONG_CONSTANT("JSON_ERROR_NON_BACKED_ENUM", PHP_JSON_ERROR_NON_BACKED_ENUM, CONST_CS | CONST_PERSISTENT);
83+
}
84+
5285
static zend_class_entry *register_class_JsonSerializable(void)
5386
{
5487
zend_class_entry ce, *class_entry;

0 commit comments

Comments
 (0)