@@ -614,14 +614,17 @@ static PHP_METHOD(Object, getPropertyNames) {
614
614
zend_long mode = static_cast <zend_long>(v8::KeyCollectionMode::kOwnOnly );
615
615
zend_long property_filter = static_cast <zend_long>(v8::PropertyFilter::ALL_PROPERTIES);
616
616
zend_long index_filter = static_cast <zend_long>(v8::IndexFilter::kIncludeIndices );
617
+ zend_bool convert_to_strings = ' \0 ' ;
617
618
618
- if (zend_parse_parameters (ZEND_NUM_ARGS (), " o|lll" , &context_zv, &mode, &property_filter, &index_filter) == FAILURE) {
619
+ if (zend_parse_parameters (ZEND_NUM_ARGS (), " o|lllb" ,
620
+ &context_zv, &mode, &property_filter, &index_filter, &convert_to_strings) == FAILURE) {
619
621
return ;
620
622
}
621
623
622
624
mode = mode ? mode & PHP_V8_KEY_COLLECTION_MODE_FLAGS : mode;
623
625
property_filter = property_filter ? property_filter & PHP_V8_PROPERTY_FILTER_FLAGS : property_filter;
624
626
index_filter = index_filter ? index_filter & PHP_V8_INDEX_FILTER_FLAGS : index_filter;
627
+ v8::KeyConversionMode key_conversion = convert_to_strings ? v8::KeyConversionMode::kConvertToString : v8::KeyConversionMode::kKeepNumbers ;
625
628
626
629
PHP_V8_VALUE_FETCH_WITH_CHECK (getThis (), php_v8_value);
627
630
PHP_V8_CONTEXT_FETCH_WITH_CHECK (context_zv, php_v8_context);
@@ -639,7 +642,8 @@ static PHP_METHOD(Object, getPropertyNames) {
639
642
v8::MaybeLocal<v8::Array> maybe_local_array = local_object->GetPropertyNames (context,
640
643
static_cast <v8::KeyCollectionMode>(mode),
641
644
static_cast <v8::PropertyFilter >(property_filter),
642
- static_cast <v8::IndexFilter>(index_filter));
645
+ static_cast <v8::IndexFilter>(index_filter),
646
+ key_conversion);
643
647
644
648
PHP_V8_MAYBE_CATCH (php_v8_context, try_catch);
645
649
PHP_V8_THROW_EXCEPTION_WHEN_EMPTY (maybe_local_array, " Failed to get property names" )
@@ -652,11 +656,13 @@ static PHP_METHOD(Object, getPropertyNames) {
652
656
static PHP_METHOD (Object, getOwnPropertyNames) {
653
657
zval *context_zv;
654
658
zend_long filter = static_cast <zend_long>(v8::PropertyFilter::ALL_PROPERTIES);
659
+ zend_bool convert_to_strings = ' \0 ' ;
655
660
656
- if (zend_parse_parameters (ZEND_NUM_ARGS (), " o|l " , &context_zv, &filter) == FAILURE) {
661
+ if (zend_parse_parameters (ZEND_NUM_ARGS (), " o|lb " , &context_zv, &filter, &convert_to_strings ) == FAILURE) {
657
662
return ;
658
663
}
659
664
filter = filter ? filter & PHP_V8_PROPERTY_FILTER_FLAGS : filter;
665
+ v8::KeyConversionMode key_conversion = convert_to_strings ? v8::KeyConversionMode::kConvertToString : v8::KeyConversionMode::kKeepNumbers ;
660
666
661
667
PHP_V8_VALUE_FETCH_WITH_CHECK (getThis (), php_v8_value);
662
668
PHP_V8_CONTEXT_FETCH_WITH_CHECK (context_zv, php_v8_context);
@@ -671,7 +677,7 @@ static PHP_METHOD(Object, getOwnPropertyNames) {
671
677
PHP_V8_TRY_CATCH (isolate);
672
678
PHP_V8_INIT_ISOLATE_LIMITS_ON_OBJECT_VALUE (php_v8_value);
673
679
674
- v8::MaybeLocal<v8::Array> maybe_local_array = local_object->GetOwnPropertyNames (context, static_cast <v8::PropertyFilter >(filter));
680
+ v8::MaybeLocal<v8::Array> maybe_local_array = local_object->GetOwnPropertyNames (context, static_cast <v8::PropertyFilter >(filter), key_conversion );
675
681
676
682
PHP_V8_MAYBE_CATCH (php_v8_context, try_catch);
677
683
PHP_V8_THROW_EXCEPTION_WHEN_EMPTY (maybe_local_array, " Failed to get own property names" )
@@ -1372,11 +1378,13 @@ PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_getPropertyNames, ZEND_RET
1372
1378
ZEND_ARG_TYPE_INFO(0 , mode, IS_LONG, 0 )
1373
1379
ZEND_ARG_TYPE_INFO(0 , property_filter, IS_LONG, 0 )
1374
1380
ZEND_ARG_TYPE_INFO(0 , index_filter, IS_LONG, 0 )
1381
+ ZEND_ARG_TYPE_INFO(0 , convert_to_strings, _IS_BOOL, 0 )
1375
1382
ZEND_END_ARG_INFO()
1376
1383
1377
1384
PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_getOwnPropertyNames, ZEND_RETURN_VALUE, 1 , V8\\ArrayObject, 0 )
1378
1385
ZEND_ARG_OBJ_INFO(0 , context, V8\\Context, 0 )
1379
1386
ZEND_ARG_TYPE_INFO(0 , filter, IS_LONG, 0 )
1387
+ ZEND_ARG_TYPE_INFO(0 , convert_to_strings, _IS_BOOL, 0 )
1380
1388
ZEND_END_ARG_INFO()
1381
1389
1382
1390
PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_getPrototype, ZEND_RETURN_VALUE, 0 , V8\\Value, 0 )
0 commit comments