@@ -539,20 +539,48 @@ static void _class_string(smart_str *str, zend_class_entry *ce, zval *obj, char
539
539
static void _const_string (smart_str * str , char * name , zval * value , char * indent )
540
540
{
541
541
const char * type = zend_zval_type_name (value );
542
+ uint32_t flags = Z_CONSTANT_FLAGS_P (value );
543
+
544
+ smart_str_appends (str , indent );
545
+ smart_str_appends (str , "Constant [ " );
546
+
547
+ if (flags & (CONST_PERSISTENT |CONST_NO_FILE_CACHE |CONST_DEPRECATED )) {
548
+ bool first = true;
549
+ smart_str_appends (str , "<" );
550
+
551
+ #define DUMP_CONST_FLAG (flag , output ) \
552
+ do { \
553
+ if (flags & flag) { \
554
+ if (!first) smart_str_appends(str, ", "); \
555
+ smart_str_appends(str, output); \
556
+ first = false; \
557
+ } \
558
+ } while (0)
559
+ DUMP_CONST_FLAG (CONST_PERSISTENT , "persistent" );
560
+ DUMP_CONST_FLAG (CONST_NO_FILE_CACHE , "no_file_cache" );
561
+ DUMP_CONST_FLAG (CONST_DEPRECATED , "deprecated" );
562
+ #undef DUMP_CONST_FLAG
563
+
564
+ smart_str_appends (str , "> " );
565
+ }
566
+
567
+ smart_str_appends (str , type );
568
+ smart_str_appendc (str , ' ' );
569
+ smart_str_appends (str , name );
570
+ smart_str_appends (str , " ] { " );
542
571
543
572
if (Z_TYPE_P (value ) == IS_ARRAY ) {
544
- smart_str_append_printf (str , "%s Constant [ %s %s ] { Array }\n" ,
545
- indent , type , name );
573
+ smart_str_appends (str , "Array" );
546
574
} else if (Z_TYPE_P (value ) == IS_STRING ) {
547
- smart_str_append_printf (str , "%s Constant [ %s %s ] { %s }\n" ,
548
- indent , type , name , Z_STRVAL_P (value ));
575
+ smart_str_appends (str , Z_STRVAL_P (value ));
549
576
} else {
550
577
zend_string * tmp_value_str ;
551
578
zend_string * value_str = zval_get_tmp_string (value , & tmp_value_str );
552
- smart_str_append_printf (str , "%s Constant [ %s %s ] { %s }\n" ,
553
- indent , type , name , ZSTR_VAL (value_str ));
579
+ smart_str_appends (str , ZSTR_VAL (value_str ));
554
580
zend_tmp_string_release (tmp_value_str );
555
581
}
582
+
583
+ smart_str_appends (str , " }\n" );
556
584
}
557
585
/* }}} */
558
586
@@ -1060,7 +1088,7 @@ static void _extension_string(smart_str *str, zend_module_entry *module, char *i
1060
1088
1061
1089
ZEND_HASH_MAP_FOREACH_PTR (EG (zend_constants ), constant ) {
1062
1090
if (ZEND_CONSTANT_MODULE_NUMBER (constant ) == module -> module_number ) {
1063
- _const_string (& str_constants , ZSTR_VAL (constant -> name ), & constant -> value , indent );
1091
+ _const_string (& str_constants , ZSTR_VAL (constant -> name ), & constant -> value , " " );
1064
1092
num_constants ++ ;
1065
1093
}
1066
1094
} ZEND_HASH_FOREACH_END ();
@@ -1251,19 +1279,6 @@ static void _zend_extension_string(smart_str *str, zend_extension *extension, ch
1251
1279
}
1252
1280
/* }}} */
1253
1281
1254
- static void _const_decl_string (smart_str * str , zend_constant * const_ )
1255
- {
1256
- smart_str_append_printf (str , "Const [ " );
1257
- if (ZEND_CONSTANT_FLAGS (const_ ) & CONST_DEPRECATED ) {
1258
- smart_str_append_printf (str , "<deprecated> " );
1259
- }
1260
- smart_str_append_printf (str , "%s = " , ZSTR_VAL (const_ -> name ));
1261
- if (format_default_value (str , & const_ -> value ) == FAILURE ) {
1262
- return ;
1263
- }
1264
- smart_str_appends (str , " ]\n" );
1265
- }
1266
-
1267
1282
/* {{{ _function_check_flag */
1268
1283
static void _function_check_flag (INTERNAL_FUNCTION_PARAMETERS , int mask )
1269
1284
{
@@ -7351,7 +7366,7 @@ ZEND_METHOD(ReflectionConstant, __toString)
7351
7366
}
7352
7367
7353
7368
GET_REFLECTION_OBJECT_PTR (const_ );
7354
- _const_decl_string (& str , const_ );
7369
+ _const_string (& str , ZSTR_VAL ( const_ -> name ), & const_ -> value , "" );
7355
7370
RETURN_STR (smart_str_extract (& str ));
7356
7371
}
7357
7372
0 commit comments