]> granicus.if.org Git - php/commitdiff
Used typed properties for reflection $name and $class
authorNikita Popov <nikita.ppv@gmail.com>
Mon, 15 Feb 2021 11:08:15 +0000 (12:08 +0100)
committerNikita Popov <nikita.ppv@gmail.com>
Mon, 15 Feb 2021 11:09:18 +0000 (12:09 +0100)
These are read-only properties, and Reflection makes sure to assign
only strings.

ext/reflection/php_reflection.stub.php
ext/reflection/php_reflection_arginfo.h
ext/reflection/tests/ReflectionClass_toString_001.phpt

index 8a67c43a99bcec93e038012beb067f44ed0e13d5..9287ae7e9c145a43fd791d4d6a38d16444346fa5 100644 (file)
@@ -18,8 +18,7 @@ interface Reflector extends Stringable
 
 abstract class ReflectionFunctionAbstract implements Reflector
 {
-    /** @var string */
-    public $name = "";
+    public string $name;
 
     /** @implementation-alias ReflectionClass::__clone */
     final private function __clone(): void {}
@@ -150,8 +149,7 @@ final class ReflectionGenerator
 
 class ReflectionMethod extends ReflectionFunctionAbstract
 {
-    /** @var string */
-    public $class = "";
+    public string $class;
 
     public function __construct(object|string $objectOrMethod, ?string $method = null) {}
 
@@ -205,8 +203,7 @@ class ReflectionMethod extends ReflectionFunctionAbstract
 
 class ReflectionClass implements Reflector
 {
-    /** @var string */
-    public $name = "";
+    public string $name;
 
     final private function __clone(): void {}
 
@@ -378,11 +375,8 @@ class ReflectionObject extends ReflectionClass
 
 class ReflectionProperty implements Reflector
 {
-    /** @var string */
-    public $name = "";
-
-    /** @var string */
-    public $class = "";
+    public string $name;
+    public string $class;
 
     /** @implementation-alias ReflectionClass::__clone */
     final private function __clone(): void {}
@@ -449,11 +443,8 @@ class ReflectionProperty implements Reflector
 
 class ReflectionClassConstant implements Reflector
 {
-    /** @var string */
-    public $name = "";
-
-    /** @var string */
-    public $class = "";
+    public string $name;
+    public string $class;
 
     /** @implementation-alias ReflectionClass::__clone */
     final private function __clone(): void {}
@@ -492,8 +483,7 @@ class ReflectionClassConstant implements Reflector
 
 class ReflectionParameter implements Reflector
 {
-    /** @var string */
-    public $name = "";
+    public string $name;
 
     /** @implementation-alias ReflectionClass::__clone */
     final private function __clone(): void {}
@@ -599,8 +589,7 @@ class ReflectionUnionType extends ReflectionType
 
 class ReflectionExtension implements Reflector
 {
-    /** @var string */
-    public $name = "";
+    public string $name;
 
     /** @implementation-alias ReflectionClass::__clone */
     final private function __clone(): void {}
@@ -645,8 +634,7 @@ class ReflectionExtension implements Reflector
 
 class ReflectionZendExtension implements Reflector
 {
-    /** @var string */
-    public $name = "";
+    public string $name;
 
     /** @implementation-alias ReflectionClass::__clone */
     final private function __clone(): void {}
index ebc488a138e63792f694cc4226eac68f83935e45..afc01cb56e09b2ab4d8c0cb41d22dca538ffae23 100644 (file)
@@ -1,5 +1,5 @@
 /* This is a generated file, edit the .stub.php file instead.
- * Stub hash: 5c4f082e36118b7a955cc1d6b1fda385dd7c0bc0 */
+ * Stub hash: fb4e29d088862cc76d22c9902c79c86dbfa7ac95 */
 
 ZEND_BEGIN_ARG_INFO_EX(arginfo_class_Reflection_getModifierNames, 0, 0, 1)
        ZEND_ARG_TYPE_INFO(0, modifiers, IS_LONG, 0)
@@ -1036,9 +1036,9 @@ zend_class_entry *register_class_ReflectionFunctionAbstract(zend_class_entry *cl
        zend_class_implements(class_entry, 1, class_entry_Reflector);
 
        zval property_name_default_value;
-       ZVAL_EMPTY_STRING(&property_name_default_value);
+       ZVAL_UNDEF(&property_name_default_value);
        zend_string *property_name_name = zend_string_init("name", sizeof("name") - 1, 1);
-       zend_declare_property_ex(class_entry, property_name_name, &property_name_default_value, ZEND_ACC_PUBLIC, NULL);
+       zend_declare_typed_property(class_entry, property_name_name, &property_name_default_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
        zend_string_release(property_name_name);
 
        return class_entry;
@@ -1073,9 +1073,9 @@ zend_class_entry *register_class_ReflectionMethod(zend_class_entry *class_entry_
        class_entry = zend_register_internal_class_ex(&ce, class_entry_ReflectionFunctionAbstract);
 
        zval property_class_default_value;
-       ZVAL_EMPTY_STRING(&property_class_default_value);
+       ZVAL_UNDEF(&property_class_default_value);
        zend_string *property_class_name = zend_string_init("class", sizeof("class") - 1, 1);
-       zend_declare_property_ex(class_entry, property_class_name, &property_class_default_value, ZEND_ACC_PUBLIC, NULL);
+       zend_declare_typed_property(class_entry, property_class_name, &property_class_default_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
        zend_string_release(property_class_name);
 
        return class_entry;
@@ -1090,9 +1090,9 @@ zend_class_entry *register_class_ReflectionClass(zend_class_entry *class_entry_R
        zend_class_implements(class_entry, 1, class_entry_Reflector);
 
        zval property_name_default_value;
-       ZVAL_EMPTY_STRING(&property_name_default_value);
+       ZVAL_UNDEF(&property_name_default_value);
        zend_string *property_name_name = zend_string_init("name", sizeof("name") - 1, 1);
-       zend_declare_property_ex(class_entry, property_name_name, &property_name_default_value, ZEND_ACC_PUBLIC, NULL);
+       zend_declare_typed_property(class_entry, property_name_name, &property_name_default_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
        zend_string_release(property_name_name);
 
        return class_entry;
@@ -1117,15 +1117,15 @@ zend_class_entry *register_class_ReflectionProperty(zend_class_entry *class_entr
        zend_class_implements(class_entry, 1, class_entry_Reflector);
 
        zval property_name_default_value;
-       ZVAL_EMPTY_STRING(&property_name_default_value);
+       ZVAL_UNDEF(&property_name_default_value);
        zend_string *property_name_name = zend_string_init("name", sizeof("name") - 1, 1);
-       zend_declare_property_ex(class_entry, property_name_name, &property_name_default_value, ZEND_ACC_PUBLIC, NULL);
+       zend_declare_typed_property(class_entry, property_name_name, &property_name_default_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
        zend_string_release(property_name_name);
 
        zval property_class_default_value;
-       ZVAL_EMPTY_STRING(&property_class_default_value);
+       ZVAL_UNDEF(&property_class_default_value);
        zend_string *property_class_name = zend_string_init("class", sizeof("class") - 1, 1);
-       zend_declare_property_ex(class_entry, property_class_name, &property_class_default_value, ZEND_ACC_PUBLIC, NULL);
+       zend_declare_typed_property(class_entry, property_class_name, &property_class_default_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
        zend_string_release(property_class_name);
 
        return class_entry;
@@ -1140,15 +1140,15 @@ zend_class_entry *register_class_ReflectionClassConstant(zend_class_entry *class
        zend_class_implements(class_entry, 1, class_entry_Reflector);
 
        zval property_name_default_value;
-       ZVAL_EMPTY_STRING(&property_name_default_value);
+       ZVAL_UNDEF(&property_name_default_value);
        zend_string *property_name_name = zend_string_init("name", sizeof("name") - 1, 1);
-       zend_declare_property_ex(class_entry, property_name_name, &property_name_default_value, ZEND_ACC_PUBLIC, NULL);
+       zend_declare_typed_property(class_entry, property_name_name, &property_name_default_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
        zend_string_release(property_name_name);
 
        zval property_class_default_value;
-       ZVAL_EMPTY_STRING(&property_class_default_value);
+       ZVAL_UNDEF(&property_class_default_value);
        zend_string *property_class_name = zend_string_init("class", sizeof("class") - 1, 1);
-       zend_declare_property_ex(class_entry, property_class_name, &property_class_default_value, ZEND_ACC_PUBLIC, NULL);
+       zend_declare_typed_property(class_entry, property_class_name, &property_class_default_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
        zend_string_release(property_class_name);
 
        return class_entry;
@@ -1163,9 +1163,9 @@ zend_class_entry *register_class_ReflectionParameter(zend_class_entry *class_ent
        zend_class_implements(class_entry, 1, class_entry_Reflector);
 
        zval property_name_default_value;
-       ZVAL_EMPTY_STRING(&property_name_default_value);
+       ZVAL_UNDEF(&property_name_default_value);
        zend_string *property_name_name = zend_string_init("name", sizeof("name") - 1, 1);
-       zend_declare_property_ex(class_entry, property_name_name, &property_name_default_value, ZEND_ACC_PUBLIC, NULL);
+       zend_declare_typed_property(class_entry, property_name_name, &property_name_default_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
        zend_string_release(property_name_name);
 
        return class_entry;
@@ -1212,9 +1212,9 @@ zend_class_entry *register_class_ReflectionExtension(zend_class_entry *class_ent
        zend_class_implements(class_entry, 1, class_entry_Reflector);
 
        zval property_name_default_value;
-       ZVAL_EMPTY_STRING(&property_name_default_value);
+       ZVAL_UNDEF(&property_name_default_value);
        zend_string *property_name_name = zend_string_init("name", sizeof("name") - 1, 1);
-       zend_declare_property_ex(class_entry, property_name_name, &property_name_default_value, ZEND_ACC_PUBLIC, NULL);
+       zend_declare_typed_property(class_entry, property_name_name, &property_name_default_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
        zend_string_release(property_name_name);
 
        return class_entry;
@@ -1229,9 +1229,9 @@ zend_class_entry *register_class_ReflectionZendExtension(zend_class_entry *class
        zend_class_implements(class_entry, 1, class_entry_Reflector);
 
        zval property_name_default_value;
-       ZVAL_EMPTY_STRING(&property_name_default_value);
+       ZVAL_UNDEF(&property_name_default_value);
        zend_string *property_name_name = zend_string_init("name", sizeof("name") - 1, 1);
-       zend_declare_property_ex(class_entry, property_name_name, &property_name_default_value, ZEND_ACC_PUBLIC, NULL);
+       zend_declare_typed_property(class_entry, property_name_name, &property_name_default_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
        zend_string_release(property_name_name);
 
        return class_entry;
index 86d6720fe6db19f1a18862bd50a6282c9956490c..e218e8b470726afd4e922aa40520553fe454b55f 100644 (file)
@@ -24,7 +24,7 @@ Class [ <internal:Reflection> class ReflectionClass implements Reflector, String
   }
 
   - Properties [1] {
-    Property [ public $name = '' ]
+    Property [ public string $name ]
   }
 
   - Methods [54] {