16
16
17
17
#include " php_v8_function_callback_info.h"
18
18
#include " php_v8_exceptions.h"
19
- #include " php_v8_callback_info.h"
20
19
#include " php_v8_return_value.h"
21
20
#include " php_v8_value.h"
22
21
#include " php_v8.h"
@@ -46,21 +45,21 @@ php_v8_return_value_t * php_v8_callback_info_create_from_info(zval *return_value
46
45
// common to both callback structures:
47
46
// isolate
48
47
ZVAL_OBJ (&tmp, &php_v8_isolate->std );
49
- zend_update_property (php_v8_callback_info_class_entry , return_value, ZEND_STRL (" isolate" ), &tmp);
48
+ zend_update_property (php_v8_function_callback_info_class_entry , return_value, ZEND_STRL (" isolate" ), &tmp);
50
49
// context
51
50
ZVAL_OBJ (&tmp, &php_v8_context->std );
52
- zend_update_property (php_v8_callback_info_class_entry , return_value, ZEND_STRL (" context" ), &tmp);
51
+ zend_update_property (php_v8_function_callback_info_class_entry , return_value, ZEND_STRL (" context" ), &tmp);
53
52
// this
54
53
php_v8_get_or_create_value (&tmp, args.This (), php_v8_isolate);
55
- zend_update_property (php_v8_callback_info_class_entry , return_value, ZEND_STRL (" this" ), &tmp);
54
+ zend_update_property (php_v8_function_callback_info_class_entry , return_value, ZEND_STRL (" this" ), &tmp);
56
55
Z_DELREF (tmp);
57
56
// holder
58
57
php_v8_get_or_create_value (&tmp, args.Holder (), php_v8_isolate);
59
- zend_update_property (php_v8_callback_info_class_entry , return_value, ZEND_STRL (" holder" ), &tmp);
58
+ zend_update_property (php_v8_function_callback_info_class_entry , return_value, ZEND_STRL (" holder" ), &tmp);
60
59
Z_DELREF (tmp);
61
60
// return value
62
61
php_v8_return_value = php_v8_return_value_create_from_return_value (&tmp, php_v8_context, PHP_V8_RETVAL_ACCEPTS_ANY);
63
- zend_update_property (php_v8_callback_info_class_entry , return_value, ZEND_STRL (" return_value" ), &tmp);
62
+ zend_update_property (php_v8_function_callback_info_class_entry , return_value, ZEND_STRL (" return_value" ), &tmp);
64
63
Z_DELREF (tmp);
65
64
66
65
// specific to function callback structure:
@@ -86,6 +85,66 @@ php_v8_return_value_t * php_v8_callback_info_create_from_info(zval *return_value
86
85
return php_v8_return_value;
87
86
}
88
87
88
+ static PHP_METHOD (CallbackInfo, getIsolate) {
89
+ zval rv;
90
+ zval *tmp;
91
+
92
+ if (zend_parse_parameters_none () == FAILURE) {
93
+ return ;
94
+ }
95
+
96
+ tmp = zend_read_property (this_ce, getThis (), ZEND_STRL (" isolate" ), 0 , &rv);
97
+ ZVAL_COPY (return_value, tmp);
98
+ }
99
+
100
+ static PHP_METHOD (CallbackInfo, getContext) {
101
+ zval rv;
102
+ zval *tmp;
103
+
104
+ if (zend_parse_parameters_none () == FAILURE) {
105
+ return ;
106
+ }
107
+
108
+ tmp = zend_read_property (this_ce, getThis (), ZEND_STRL (" context" ), 0 , &rv);
109
+ ZVAL_COPY (return_value, tmp);
110
+ }
111
+
112
+ static PHP_METHOD (CallbackInfo, this ) {
113
+ zval rv;
114
+ zval *tmp;
115
+
116
+ if (zend_parse_parameters_none () == FAILURE) {
117
+ return ;
118
+ }
119
+
120
+ tmp = zend_read_property (this_ce, getThis (), ZEND_STRL (" this" ), 0 , &rv);
121
+ ZVAL_COPY (return_value, tmp);
122
+ }
123
+
124
+ static PHP_METHOD (CallbackInfo, holder) {
125
+ zval rv;
126
+ zval *tmp;
127
+
128
+ if (zend_parse_parameters_none () == FAILURE) {
129
+ return ;
130
+ }
131
+
132
+ tmp = zend_read_property (this_ce, getThis (), ZEND_STRL (" holder" ), 0 , &rv);
133
+ ZVAL_COPY (return_value, tmp);
134
+ }
135
+
136
+ static PHP_METHOD (CallbackInfo, getReturnValue) {
137
+ zval rv;
138
+ zval *tmp;
139
+
140
+ if (zend_parse_parameters_none () == FAILURE) {
141
+ return ;
142
+ }
143
+
144
+ tmp = zend_read_property (this_ce, getThis (), ZEND_STRL (" return_value" ), 0 , &rv);
145
+ ZVAL_COPY (return_value, tmp);
146
+ }
147
+
89
148
static PHP_METHOD (FunctionCallbackInfo, length) {
90
149
zval rv;
91
150
zval *tmp;
@@ -136,6 +195,21 @@ static PHP_METHOD(FunctionCallbackInfo, isConstructCall) {
136
195
}
137
196
138
197
198
+ PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX (arginfo_getIsolate, ZEND_RETURN_VALUE, 0 , V8\\Isolate, 0 )
199
+ ZEND_END_ARG_INFO()
200
+
201
+ PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_getContext, ZEND_RETURN_VALUE, 0 , V8\\Context, 0 )
202
+ ZEND_END_ARG_INFO()
203
+
204
+ PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_this, ZEND_RETURN_VALUE, 0 , V8\\ObjectValue, 0 )
205
+ ZEND_END_ARG_INFO()
206
+
207
+ PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_holder, ZEND_RETURN_VALUE, 0 , V8\\ObjectValue, 0 )
208
+ ZEND_END_ARG_INFO()
209
+
210
+ PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_getReturnValue, ZEND_RETURN_VALUE, 0 , V8\\ReturnValue, 0 )
211
+ ZEND_END_ARG_INFO()
212
+
139
213
PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_length, ZEND_RETURN_VALUE, 0 , IS_LONG, 0 )
140
214
ZEND_END_ARG_INFO()
141
215
@@ -150,6 +224,11 @@ ZEND_END_ARG_INFO()
150
224
151
225
152
226
static const zend_function_entry php_v8_function_callback_info_methods[] = {
227
+ PHP_V8_ME (CallbackInfo, this , ZEND_ACC_PUBLIC)
228
+ PHP_V8_ME (CallbackInfo, holder, ZEND_ACC_PUBLIC)
229
+ PHP_V8_ME (CallbackInfo, getIsolate, ZEND_ACC_PUBLIC)
230
+ PHP_V8_ME (CallbackInfo, getContext, ZEND_ACC_PUBLIC)
231
+ PHP_V8_ME (CallbackInfo, getReturnValue, ZEND_ACC_PUBLIC)
153
232
PHP_V8_ME (FunctionCallbackInfo, length, ZEND_ACC_PUBLIC)
154
233
PHP_V8_ME (FunctionCallbackInfo, arguments, ZEND_ACC_PUBLIC)
155
234
PHP_V8_ME (FunctionCallbackInfo, newTarget, ZEND_ACC_PUBLIC)
@@ -161,8 +240,13 @@ PHP_MINIT_FUNCTION(php_v8_function_callback_info) {
161
240
zend_class_entry ce;
162
241
163
242
INIT_NS_CLASS_ENTRY (ce, PHP_V8_NS, " FunctionCallbackInfo" , php_v8_function_callback_info_methods);
164
- this_ce = zend_register_internal_class_ex (&ce, php_v8_callback_info_class_entry );
243
+ this_ce = zend_register_internal_class (&ce);
165
244
245
+ zend_declare_property_null (this_ce, ZEND_STRL (" isolate" ), ZEND_ACC_PRIVATE);
246
+ zend_declare_property_null (this_ce, ZEND_STRL (" context" ), ZEND_ACC_PRIVATE);
247
+ zend_declare_property_null (this_ce, ZEND_STRL (" this" ), ZEND_ACC_PRIVATE);
248
+ zend_declare_property_null (this_ce, ZEND_STRL (" holder" ), ZEND_ACC_PRIVATE);
249
+ zend_declare_property_null (this_ce, ZEND_STRL (" return_value" ), ZEND_ACC_PRIVATE);
166
250
zend_declare_property_null (this_ce, ZEND_STRL (" arguments" ), ZEND_ACC_PRIVATE);
167
251
zend_declare_property_null (this_ce, ZEND_STRL (" new_target" ), ZEND_ACC_PRIVATE);
168
252
zend_declare_property_null (this_ce, ZEND_STRL (" is_constructor_call" ), ZEND_ACC_PRIVATE);
0 commit comments