@@ -212,7 +212,11 @@ static void v8js_call_php_func(zend_object *object, zend_function *method_ptr, c
212
212
return_value = v8js_propagate_exception (ctx);
213
213
} else if (Z_TYPE (retval) == IS_OBJECT && Z_OBJ (retval) == object) {
214
214
// special case: "return $this"
215
+ #if PHP_V8_API_VERSION >= 13000000
216
+ return_value = info.This ();
217
+ #else
215
218
return_value = info.Holder ();
219
+ #endif
216
220
} else {
217
221
return_value = zval_to_v8js (&retval, isolate);
218
222
}
@@ -227,7 +231,12 @@ static void v8js_call_php_func(zend_object *object, zend_function *method_ptr, c
227
231
/* Callback for PHP methods and functions */
228
232
void v8js_php_callback (const v8::FunctionCallbackInfo<v8::Value>& info) /* {{{ */
229
233
{
230
- v8::Local<v8::Object> self = info.Holder ();
234
+ v8::Local<v8::Object> self;
235
+ #if PHP_V8_API_VERSION >= 13000000
236
+ self = info.This ();
237
+ #else
238
+ self = info.Holder ();
239
+ #endif
231
240
232
241
zend_object *object = reinterpret_cast <zend_object *>(self->GetAlignedPointerFromInternalField (1 ));
233
242
zend_function *method_ptr;
@@ -364,7 +373,12 @@ static void v8js_named_property_enumerator(const v8::PropertyCallbackInfo<v8::Ar
364
373
v8::Isolate *isolate = info.GetIsolate ();
365
374
v8::Local<v8::Context> v8_context = isolate->GetEnteredOrMicrotaskContext ();
366
375
367
- v8::Local<v8::Object> self = info.Holder ();
376
+ v8::Local<v8::Object> self;
377
+ #if PHP_V8_API_VERSION >= 13000000
378
+ self = info.This ();
379
+ #else
380
+ self = info.Holder ();
381
+ #endif
368
382
v8::Local<v8::Array> result = v8::Array::New (isolate, 0 );
369
383
uint32_t result_len = 0 ;
370
384
@@ -466,7 +480,12 @@ static void v8js_invoke_callback(const v8::FunctionCallbackInfo<v8::Value>& info
466
480
v8::Isolate *isolate = info.GetIsolate ();
467
481
v8::Local<v8::Context> v8_context = isolate->GetEnteredOrMicrotaskContext ();
468
482
469
- v8::Local<v8::Object> self = info.Holder ();
483
+ v8::Local<v8::Object> self;
484
+ #if PHP_V8_API_VERSION >= 13000000
485
+ self = info.This ();
486
+ #else
487
+ self = info.Holder ();
488
+ #endif
470
489
v8::Local<v8::Function> cb = v8::Local<v8::Function>::Cast (info.Data ());
471
490
int argc = info.Length (), i;
472
491
v8::Local<v8::Value> *argv = static_cast <v8::Local<v8::Value> *>(alloca (sizeof (v8::Local<v8::Value>) * argc));
@@ -511,7 +530,12 @@ static void v8js_fake_call_impl(const v8::FunctionCallbackInfo<v8::Value>& info)
511
530
v8::Isolate *isolate = info.GetIsolate ();
512
531
v8::Local<v8::Context> v8_context = isolate->GetEnteredOrMicrotaskContext ();
513
532
514
- v8::Local<v8::Object> self = info.Holder ();
533
+ v8::Local<v8::Object> self;
534
+ #if PHP_V8_API_VERSION >= 13000000
535
+ self = info.This ();
536
+ #else
537
+ self = info.Holder ();
538
+ #endif
515
539
v8::Local<v8::Value> return_value = V8JS_NULL;
516
540
517
541
char *error;
@@ -859,7 +883,13 @@ v8::Local<v8::Value> v8js_named_property_callback(v8::Isolate *isolate, v8::Loca
859
883
860
884
static V8JS_INTERCEPTED v8js_named_property_getter (v8::Local<v8::Name> property, const v8::PropertyCallbackInfo<v8::Value> &info) /* {{{ */
861
885
{
862
- v8::Local<v8::Value> r = v8js_named_property_callback (info.GetIsolate (), info.Holder (), property, V8JS_PROP_GETTER);
886
+ v8::Local<v8::Object> self;
887
+ #if PHP_V8_API_VERSION >= 13000000
888
+ self = info.This ();
889
+ #else
890
+ self = info.Holder ();
891
+ #endif
892
+ v8::Local<v8::Value> r = v8js_named_property_callback (info.GetIsolate (), self, property, V8JS_PROP_GETTER);
863
893
864
894
if (r.IsEmpty ()) {
865
895
return V8JS_INTERCEPTED_NO;
@@ -872,7 +902,13 @@ static V8JS_INTERCEPTED v8js_named_property_getter(v8::Local<v8::Name> property,
872
902
873
903
static V8JS_INTERCEPTED v8js_named_property_setter (v8::Local<v8::Name> property, v8::Local<v8::Value> value, const V8JS_SETTER_PROPERTY_CALLBACK_INFO &info) /* {{{ */
874
904
{
875
- v8::Local<v8::Value> r = v8js_named_property_callback (info.GetIsolate (), info.Holder (), property, V8JS_PROP_SETTER, value);
905
+ v8::Local<v8::Object> self;
906
+ #if PHP_V8_API_VERSION >= 13000000
907
+ self = info.This ();
908
+ #else
909
+ self = info.Holder ();
910
+ #endif
911
+ v8::Local<v8::Value> r = v8js_named_property_callback (info.GetIsolate (), self, property, V8JS_PROP_SETTER, value);
876
912
#if PHP_V8_HAS_INTERCEPTED
877
913
return r.IsEmpty () ? v8::Intercepted::kNo : v8::Intercepted::kYes ;
878
914
#else
@@ -883,7 +919,13 @@ static V8JS_INTERCEPTED v8js_named_property_setter(v8::Local<v8::Name> property,
883
919
884
920
static V8JS_INTERCEPTED v8js_named_property_query (v8::Local<v8::Name> property, const v8::PropertyCallbackInfo<v8::Integer> &info) /* {{{ */
885
921
{
886
- v8::Local<v8::Value> r = v8js_named_property_callback (info.GetIsolate (), info.Holder (), property, V8JS_PROP_QUERY);
922
+ v8::Local<v8::Object> self;
923
+ #if PHP_V8_API_VERSION >= 13000000
924
+ self = info.This ();
925
+ #else
926
+ self = info.Holder ();
927
+ #endif
928
+ v8::Local<v8::Value> r = v8js_named_property_callback (info.GetIsolate (), self, property, V8JS_PROP_QUERY);
887
929
if (r.IsEmpty ()) {
888
930
return V8JS_INTERCEPTED_NO;
889
931
}
@@ -901,7 +943,13 @@ static V8JS_INTERCEPTED v8js_named_property_query(v8::Local<v8::Name> property,
901
943
902
944
static V8JS_INTERCEPTED v8js_named_property_deleter (v8::Local<v8::Name> property, const v8::PropertyCallbackInfo<v8::Boolean > &info) /* {{{ */
903
945
{
904
- v8::Local<v8::Value> r = v8js_named_property_callback (info.GetIsolate (), info.Holder (), property, V8JS_PROP_DELETER);
946
+ v8::Local<v8::Object> self;
947
+ #if PHP_V8_API_VERSION >= 13000000
948
+ self = info.This ();
949
+ #else
950
+ self = info.Holder ();
951
+ #endif
952
+ v8::Local<v8::Value> r = v8js_named_property_callback (info.GetIsolate (), self, property, V8JS_PROP_DELETER);
905
953
if (r.IsEmpty ()) {
906
954
return V8JS_INTERCEPTED_NO;
907
955
}
0 commit comments