summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikita Popov <nikita.ppv@gmail.com>2021-02-15 12:08:15 +0100
committerNikita Popov <nikita.ppv@gmail.com>2021-02-15 12:09:18 +0100
commit2ccf6309176d8bcba0245da16a4ab497ece24719 (patch)
tree8ec3cfed6f41a8223d912df5822e267ec870941b
parenta730dc0cf98c8812bc8f4b4773699511e5639c06 (diff)
downloadphp-git-2ccf6309176d8bcba0245da16a4ab497ece24719.tar.gz
Used typed properties for reflection $name and $class
These are read-only properties, and Reflection makes sure to assign only strings.
-rw-r--r--ext/reflection/php_reflection.stub.php32
-rw-r--r--ext/reflection/php_reflection_arginfo.h42
-rw-r--r--ext/reflection/tests/ReflectionClass_toString_001.phpt2
3 files changed, 32 insertions, 44 deletions
diff --git a/ext/reflection/php_reflection.stub.php b/ext/reflection/php_reflection.stub.php
index 8a67c43a99..9287ae7e9c 100644
--- a/ext/reflection/php_reflection.stub.php
+++ b/ext/reflection/php_reflection.stub.php
@@ -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 {}
diff --git a/ext/reflection/php_reflection_arginfo.h b/ext/reflection/php_reflection_arginfo.h
index ebc488a138..afc01cb56e 100644
--- a/ext/reflection/php_reflection_arginfo.h
+++ b/ext/reflection/php_reflection_arginfo.h
@@ -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;
diff --git a/ext/reflection/tests/ReflectionClass_toString_001.phpt b/ext/reflection/tests/ReflectionClass_toString_001.phpt
index 86d6720fe6..e218e8b470 100644
--- a/ext/reflection/tests/ReflectionClass_toString_001.phpt
+++ b/ext/reflection/tests/ReflectionClass_toString_001.phpt
@@ -24,7 +24,7 @@ Class [ <internal:Reflection> class ReflectionClass implements Reflector, String
}
- Properties [1] {
- Property [ public $name = '' ]
+ Property [ public string $name ]
}
- Methods [54] {