|
@@ -725,6 +725,7 @@ static inline v8::Local<v8::Value> php_v8js_named_property_callback(v8::Local<v8
|
|
zval *prop;
|
|
zval *prop;
|
|
MAKE_STD_ZVAL(prop);
|
|
MAKE_STD_ZVAL(prop);
|
|
ZVAL_STRINGL(prop, name, name_len, 1);
|
|
ZVAL_STRINGL(prop, name, name_len, 1);
|
|
|
|
+
|
|
if (callback_type == V8JS_PROP_QUERY) {
|
|
if (callback_type == V8JS_PROP_QUERY) {
|
|
if (h->has_property(object, prop, 0 ZEND_HASH_KEY_NULL TSRMLS_CC)) {
|
|
if (h->has_property(object, prop, 0 ZEND_HASH_KEY_NULL TSRMLS_CC)) {
|
|
ret_value = V8JS_UINT(v8::None);
|
|
ret_value = V8JS_UINT(v8::None);
|
|
@@ -732,8 +733,15 @@ static inline v8::Local<v8::Value> php_v8js_named_property_callback(v8::Local<v8
|
|
ret_value = v8::Handle<v8::Value>(); // empty handle
|
|
ret_value = v8::Handle<v8::Value>(); // empty handle
|
|
}
|
|
}
|
|
} else {
|
|
} else {
|
|
- h->unset_property(object, prop ZEND_HASH_KEY_NULL TSRMLS_CC);
|
|
|
|
- ret_value = V8JS_BOOL(true);
|
|
|
|
|
|
+ zend_property_info *property_info = zend_get_property_info(ce, prop, 1 TSRMLS_CC);
|
|
|
|
+
|
|
|
|
+ if(property_info && property_info->flags & ZEND_ACC_PUBLIC) {
|
|
|
|
+ h->unset_property(object, prop ZEND_HASH_KEY_NULL TSRMLS_CC);
|
|
|
|
+ ret_value = V8JS_BOOL(true);
|
|
|
|
+ }
|
|
|
|
+ else {
|
|
|
|
+ ret_value = v8::Handle<v8::Value>(); // empty handle
|
|
|
|
+ }
|
|
}
|
|
}
|
|
zval_ptr_dtor(&prop);
|
|
zval_ptr_dtor(&prop);
|
|
} else {
|
|
} else {
|