@@ -614,14 +614,17 @@ static PHP_METHOD(Object, getPropertyNames) {
614614 zend_long mode = static_cast <zend_long>(v8::KeyCollectionMode::kOwnOnly );
615615 zend_long property_filter = static_cast <zend_long>(v8::PropertyFilter::ALL_PROPERTIES);
616616 zend_long index_filter = static_cast <zend_long>(v8::IndexFilter::kIncludeIndices );
617+ zend_bool convert_to_strings = ' \0 ' ;
617618
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) {
619621 return ;
620622 }
621623
622624 mode = mode ? mode & PHP_V8_KEY_COLLECTION_MODE_FLAGS : mode;
623625 property_filter = property_filter ? property_filter & PHP_V8_PROPERTY_FILTER_FLAGS : property_filter;
624626 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 ;
625628
626629 PHP_V8_VALUE_FETCH_WITH_CHECK (getThis (), php_v8_value);
627630 PHP_V8_CONTEXT_FETCH_WITH_CHECK (context_zv, php_v8_context);
@@ -639,7 +642,8 @@ static PHP_METHOD(Object, getPropertyNames) {
639642 v8::MaybeLocal<v8::Array> maybe_local_array = local_object->GetPropertyNames (context,
640643 static_cast <v8::KeyCollectionMode>(mode),
641644 static_cast <v8::PropertyFilter >(property_filter),
642- static_cast <v8::IndexFilter>(index_filter));
645+ static_cast <v8::IndexFilter>(index_filter),
646+ key_conversion);
643647
644648 PHP_V8_MAYBE_CATCH (php_v8_context, try_catch);
645649 PHP_V8_THROW_EXCEPTION_WHEN_EMPTY (maybe_local_array, " Failed to get property names" )
@@ -652,11 +656,13 @@ static PHP_METHOD(Object, getPropertyNames) {
652656static PHP_METHOD (Object, getOwnPropertyNames) {
653657 zval *context_zv;
654658 zend_long filter = static_cast <zend_long>(v8::PropertyFilter::ALL_PROPERTIES);
659+ zend_bool convert_to_strings = ' \0 ' ;
655660
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) {
657662 return ;
658663 }
659664 filter = filter ? filter & PHP_V8_PROPERTY_FILTER_FLAGS : filter;
665+ v8::KeyConversionMode key_conversion = convert_to_strings ? v8::KeyConversionMode::kConvertToString : v8::KeyConversionMode::kKeepNumbers ;
660666
661667 PHP_V8_VALUE_FETCH_WITH_CHECK (getThis (), php_v8_value);
662668 PHP_V8_CONTEXT_FETCH_WITH_CHECK (context_zv, php_v8_context);
@@ -671,7 +677,7 @@ static PHP_METHOD(Object, getOwnPropertyNames) {
671677 PHP_V8_TRY_CATCH (isolate);
672678 PHP_V8_INIT_ISOLATE_LIMITS_ON_OBJECT_VALUE (php_v8_value);
673679
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 );
675681
676682 PHP_V8_MAYBE_CATCH (php_v8_context, try_catch);
677683 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
13721378 ZEND_ARG_TYPE_INFO(0 , mode, IS_LONG, 0 )
13731379 ZEND_ARG_TYPE_INFO(0 , property_filter, IS_LONG, 0 )
13741380 ZEND_ARG_TYPE_INFO(0 , index_filter, IS_LONG, 0 )
1381+ ZEND_ARG_TYPE_INFO(0 , convert_to_strings, _IS_BOOL, 0 )
13751382ZEND_END_ARG_INFO()
13761383
13771384PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_getOwnPropertyNames, ZEND_RETURN_VALUE, 1 , V8\\ArrayObject, 0 )
13781385 ZEND_ARG_OBJ_INFO(0 , context, V8\\Context, 0 )
13791386 ZEND_ARG_TYPE_INFO(0 , filter, IS_LONG, 0 )
1387+ ZEND_ARG_TYPE_INFO(0 , convert_to_strings, _IS_BOOL, 0 )
13801388ZEND_END_ARG_INFO()
13811389
13821390PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_getPrototype, ZEND_RETURN_VALUE, 0 , V8\\Value, 0 )
0 commit comments