1616
1717#include " php_v8_function_callback_info.h"
1818#include " php_v8_exceptions.h"
19- #include " php_v8_callback_info.h"
2019#include " php_v8_return_value.h"
2120#include " php_v8_value.h"
2221#include " php_v8.h"
@@ -46,21 +45,21 @@ php_v8_return_value_t * php_v8_callback_info_create_from_info(zval *return_value
4645 // common to both callback structures:
4746 // isolate
4847 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);
5049 // context
5150 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);
5352 // this
5453 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);
5655 Z_DELREF (tmp);
5756 // holder
5857 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);
6059 Z_DELREF (tmp);
6160 // return value
6261 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);
6463 Z_DELREF (tmp);
6564
6665 // specific to function callback structure:
@@ -86,6 +85,66 @@ php_v8_return_value_t * php_v8_callback_info_create_from_info(zval *return_value
8685 return php_v8_return_value;
8786}
8887
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+
89148static PHP_METHOD (FunctionCallbackInfo, length) {
90149 zval rv;
91150 zval *tmp;
@@ -136,6 +195,21 @@ static PHP_METHOD(FunctionCallbackInfo, isConstructCall) {
136195}
137196
138197
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+
139213PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_length, ZEND_RETURN_VALUE, 0 , IS_LONG, 0 )
140214ZEND_END_ARG_INFO()
141215
@@ -150,6 +224,11 @@ ZEND_END_ARG_INFO()
150224
151225
152226static 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)
153232 PHP_V8_ME (FunctionCallbackInfo, length, ZEND_ACC_PUBLIC)
154233 PHP_V8_ME (FunctionCallbackInfo, arguments, ZEND_ACC_PUBLIC)
155234 PHP_V8_ME (FunctionCallbackInfo, newTarget, ZEND_ACC_PUBLIC)
@@ -161,8 +240,13 @@ PHP_MINIT_FUNCTION(php_v8_function_callback_info) {
161240 zend_class_entry ce;
162241
163242 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);
165244
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);
166250 zend_declare_property_null (this_ce, ZEND_STRL (" arguments" ), ZEND_ACC_PRIVATE);
167251 zend_declare_property_null (this_ce, ZEND_STRL (" new_target" ), ZEND_ACC_PRIVATE);
168252 zend_declare_property_null (this_ce, ZEND_STRL (" is_constructor_call" ), ZEND_ACC_PRIVATE);
0 commit comments