]> granicus.if.org Git - php/commitdiff
Show property type in reflection export
authorNikita Popov <nikita.ppv@gmail.com>
Thu, 2 Apr 2020 09:05:04 +0000 (11:05 +0200)
committerNikita Popov <nikita.ppv@gmail.com>
Thu, 2 Apr 2020 09:05:04 +0000 (11:05 +0200)
ext/reflection/php_reflection.c
ext/reflection/tests/ReflectionClass_export_basic2.phpt

index e3d16fd3e077efd1670dffb175280eeeb3b62856..018f97e46201b869d394ceb500fcc72b8cb76da3 100644 (file)
@@ -595,7 +595,8 @@ static void _parameter_string(smart_str *str, zend_function *fptr, struct _zend_
        }
        if (ZEND_TYPE_IS_SET(arg_info->type)) {
                zend_string *type_str = zend_type_to_string(arg_info->type);
-               smart_str_append_printf(str, "%s ", ZSTR_VAL(type_str));
+               smart_str_append(str, type_str);
+               smart_str_appendc(str, ' ');
                zend_string_release(type_str);
        }
        if (ZEND_ARG_SEND_MODE(arg_info)) {
@@ -843,6 +844,12 @@ static void _property_string(smart_str *str, zend_property_info *prop, const cha
                if (prop->flags & ZEND_ACC_STATIC) {
                        smart_str_appends(str, "static ");
                }
+               if (ZEND_TYPE_IS_SET(prop->type)) {
+                       zend_string *type_str = zend_type_to_string(prop->type);
+                       smart_str_append(str, type_str);
+                       smart_str_appendc(str, ' ');
+                       zend_string_release(type_str);
+               }
                if (!prop_name) {
                        const char *class_name;
                        zend_unmangle_property_name(prop->name, &class_name, &prop_name);
index c91c5d1d732d3e0fb877b5f5c7bcee33447a42d1..6f3c54c88a28861c2ce5ed771ac622388523c546 100644 (file)
@@ -5,6 +5,7 @@ ReflectionClass::__toString() - ensure inherited private props are hidden.
 Class c {
     private $a;
     static private $b;
+    public ?int $c = 42;
 }
 
 class d extends c {}
@@ -14,7 +15,7 @@ echo new ReflectionClass("d"), "\n";
 ?>
 --EXPECTF--
 Class [ <user> class c ] {
-  @@ %s 2-5
+  @@ %s 2-6
 
   - Constants [0] {
   }
@@ -26,8 +27,9 @@ Class [ <user> class c ] {
   - Static methods [0] {
   }
 
-  - Properties [1] {
+  - Properties [2] {
     Property [ <default> private $a ]
+    Property [ <default> public ?int $c ]
   }
 
   - Methods [0] {
@@ -35,7 +37,7 @@ Class [ <user> class c ] {
 }
 
 Class [ <user> class d extends c ] {
-  @@ %s 7-7
+  @@ %s 8-8
 
   - Constants [0] {
   }
@@ -46,7 +48,8 @@ Class [ <user> class d extends c ] {
   - Static methods [0] {
   }
 
-  - Properties [0] {
+  - Properties [1] {
+    Property [ <default> public ?int $c ]
   }
 
   - Methods [0] {