Browse Source

Merge pull request #219 from stesie/fix-v8object-passback

Pass back V8Object instances, don't re-wrap
Stefan Siegl 9 năm trước cách đây
mục cha
commit
21c8bd2288
2 tập tin đã thay đổi với 21 bổ sung1 xóa
  1. 20 0
      tests/object_passback_002.phpt
  2. 1 1
      v8js_object_export.cc

+ 20 - 0
tests/object_passback_002.phpt

@@ -0,0 +1,20 @@
+--TEST--
+Test V8::executeString() : Object passing JS > PHP > JS
+--SKIPIF--
+<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
+--FILE--
+<?php
+
+$v8 = new V8Js();
+
+$v8->theApiCall = function() use ($v8) {
+	return $v8->executeString('({ foo: 23 })');
+};
+
+$v8->executeString('var_dump(PHP.theApiCall().constructor.name);');
+
+?>
+===EOF===
+--EXPECT--
+string(6) "Object"
+===EOF===

+ 1 - 1
v8js_object_export.cc

@@ -988,7 +988,7 @@ v8::Handle<v8::Value> v8js_hash_to_jsobj(zval *value, v8::Isolate *isolate TSRML
 	}
 
 	/* Special case, passing back object originating from JS to JS */
-	if (ce == php_ce_v8function) {
+	if (ce == php_ce_v8function || ce == php_ce_v8object) {
 		v8js_v8object *c = (v8js_v8object *) zend_object_store_get_object(value TSRMLS_CC);
 
 		if(isolate != c->ctx->isolate) {