mirror of
https://github.com/phpv8/v8js.git
synced 2024-11-09 15:18:41 +00:00
Correctly force to array on property writing, closes #137
This commit is contained in:
parent
5c43a471b4
commit
b350871795
@ -1,5 +1,5 @@
|
|||||||
--TEST--
|
--TEST--
|
||||||
Test V8::executeString() : Forcing to arrays
|
Test V8::executeString() : Forcing to arrays (return value conversion)
|
||||||
--SKIPIF--
|
--SKIPIF--
|
||||||
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
|
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
|
||||||
--FILE--
|
--FILE--
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
--TEST--
|
--TEST--
|
||||||
Test V8::executeString() : Forcing to arrays
|
Test V8::executeString() : Forcing to arrays (argument passing)
|
||||||
--SKIPIF--
|
--SKIPIF--
|
||||||
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
|
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
|
||||||
--FILE--
|
--FILE--
|
||||||
|
42
tests/execute_flags_property_writing.phpt
Normal file
42
tests/execute_flags_property_writing.phpt
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
--TEST--
|
||||||
|
Test V8::executeString() : Forcing to arrays (property writing)
|
||||||
|
--SKIPIF--
|
||||||
|
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
|
||||||
|
--FILE--
|
||||||
|
<?php
|
||||||
|
|
||||||
|
$js = <<<'EOT'
|
||||||
|
PHP.test.foo = { "hello": "world" };
|
||||||
|
EOT;
|
||||||
|
|
||||||
|
$v8 = new V8Js();
|
||||||
|
$v8->test = new stdClass();
|
||||||
|
|
||||||
|
try {
|
||||||
|
$v8->executeString($js, 'no_flags.js');
|
||||||
|
var_dump($v8->test);
|
||||||
|
echo "---\n";
|
||||||
|
$v8->executeString($js, 'force_to_array.js', V8Js::FLAG_FORCE_ARRAY);
|
||||||
|
var_dump($v8->test);
|
||||||
|
} catch (V8JsScriptException $e) {
|
||||||
|
var_dump($e);
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
===EOF===
|
||||||
|
--EXPECTF--
|
||||||
|
object(stdClass)#%d (1) {
|
||||||
|
["foo"]=>
|
||||||
|
object(V8Object)#%d (1) {
|
||||||
|
["hello"]=>
|
||||||
|
string(5) "world"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
---
|
||||||
|
object(stdClass)#%d (1) {
|
||||||
|
["foo"]=>
|
||||||
|
array(1) {
|
||||||
|
["hello"]=>
|
||||||
|
string(5) "world"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
===EOF===
|
@ -648,8 +648,9 @@ inline v8::Local<v8::Value> v8js_named_property_callback(v8::Local<v8::String> p
|
|||||||
zval_ptr_dtor(&php_value);
|
zval_ptr_dtor(&php_value);
|
||||||
}
|
}
|
||||||
} else if (callback_type == V8JS_PROP_SETTER) {
|
} else if (callback_type == V8JS_PROP_SETTER) {
|
||||||
|
int flags = V8JS_GLOBAL_GET_FLAGS(isolate);
|
||||||
MAKE_STD_ZVAL(php_value);
|
MAKE_STD_ZVAL(php_value);
|
||||||
if (v8js_to_zval(set_value, php_value, 0, isolate TSRMLS_CC) != SUCCESS) {
|
if (v8js_to_zval(set_value, php_value, flags, isolate TSRMLS_CC) != SUCCESS) {
|
||||||
ret_value = v8::Handle<v8::Value>();
|
ret_value = v8::Handle<v8::Value>();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
Loading…
Reference in New Issue
Block a user