summaryrefslogtreecommitdiff
path: root/ext/reflection
diff options
context:
space:
mode:
Diffstat (limited to 'ext/reflection')
-rw-r--r--ext/reflection/php_reflection.c132
-rw-r--r--ext/reflection/php_reflection.stub.php32
-rw-r--r--ext/reflection/php_reflection_arginfo.h267
3 files changed, 340 insertions, 91 deletions
diff --git a/ext/reflection/php_reflection.c b/ext/reflection/php_reflection.c
index 73c6926b0d..2f1a358518 100644
--- a/ext/reflection/php_reflection.c
+++ b/ext/reflection/php_reflection.c
@@ -6511,8 +6511,6 @@ static void reflection_init_class_handlers(zend_class_entry *ce) {
PHP_MINIT_FUNCTION(reflection) /* {{{ */
{
- zend_class_entry _reflection_entry;
-
memcpy(&reflection_object_handlers, &std_object_handlers, sizeof(zend_object_handlers));
reflection_object_handlers.offset = XtOffsetOf(reflection_object, zo);
reflection_object_handlers.free_obj = reflection_free_objects_storage;
@@ -6520,59 +6518,37 @@ PHP_MINIT_FUNCTION(reflection) /* {{{ */
reflection_object_handlers.write_property = _reflection_write_property;
reflection_object_handlers.get_gc = reflection_get_gc;
- INIT_CLASS_ENTRY(_reflection_entry, "ReflectionException", class_ReflectionException_methods);
- reflection_exception_ptr = zend_register_internal_class_ex(&_reflection_entry, zend_ce_exception);
+ reflection_exception_ptr = register_class_ReflectionException(zend_ce_exception);
- INIT_CLASS_ENTRY(_reflection_entry, "Reflection", class_Reflection_methods);
- reflection_ptr = zend_register_internal_class(&_reflection_entry);
+ reflection_ptr = register_class_Reflection();
- INIT_CLASS_ENTRY(_reflection_entry, "Reflector", class_Reflector_methods);
- reflector_ptr = zend_register_internal_interface(&_reflection_entry);
- zend_class_implements(reflector_ptr, 1, zend_ce_stringable);
+ reflector_ptr = register_class_Reflector(zend_ce_stringable);
- INIT_CLASS_ENTRY(_reflection_entry, "ReflectionFunctionAbstract", class_ReflectionFunctionAbstract_methods);
- reflection_init_class_handlers(&_reflection_entry);
- reflection_function_abstract_ptr = zend_register_internal_class(&_reflection_entry);
- zend_class_implements(reflection_function_abstract_ptr, 1, reflector_ptr);
- zend_declare_property_string(reflection_function_abstract_ptr, "name", sizeof("name")-1, "", ZEND_ACC_ABSTRACT);
+ reflection_function_abstract_ptr = register_class_ReflectionFunctionAbstract(reflector_ptr);
+ reflection_init_class_handlers(reflection_function_abstract_ptr);
- INIT_CLASS_ENTRY(_reflection_entry, "ReflectionFunction", class_ReflectionFunction_methods);
- reflection_init_class_handlers(&_reflection_entry);
- reflection_function_ptr = zend_register_internal_class_ex(&_reflection_entry, reflection_function_abstract_ptr);
- zend_declare_property_string(reflection_function_ptr, "name", sizeof("name")-1, "", ZEND_ACC_PUBLIC);
+ reflection_function_ptr = register_class_ReflectionFunction(reflection_function_abstract_ptr);
+ reflection_init_class_handlers(reflection_function_ptr);
REGISTER_REFLECTION_CLASS_CONST_LONG(function, "IS_DEPRECATED", ZEND_ACC_DEPRECATED);
- INIT_CLASS_ENTRY(_reflection_entry, "ReflectionGenerator", class_ReflectionGenerator_methods);
- reflection_init_class_handlers(&_reflection_entry);
- reflection_generator_ptr = zend_register_internal_class(&_reflection_entry);
- reflection_generator_ptr->ce_flags |= ZEND_ACC_FINAL;
-
- INIT_CLASS_ENTRY(_reflection_entry, "ReflectionParameter", class_ReflectionParameter_methods);
- reflection_init_class_handlers(&_reflection_entry);
- reflection_parameter_ptr = zend_register_internal_class(&_reflection_entry);
- zend_class_implements(reflection_parameter_ptr, 1, reflector_ptr);
- zend_declare_property_string(reflection_parameter_ptr, "name", sizeof("name")-1, "", ZEND_ACC_PUBLIC);
-
- INIT_CLASS_ENTRY(_reflection_entry, "ReflectionType", class_ReflectionType_methods);
- reflection_init_class_handlers(&_reflection_entry);
- reflection_type_ptr = zend_register_internal_class(&_reflection_entry);
- reflection_type_ptr->ce_flags |= ZEND_ACC_EXPLICIT_ABSTRACT_CLASS;
- zend_class_implements(reflection_type_ptr, 1, zend_ce_stringable);
-
- INIT_CLASS_ENTRY(_reflection_entry, "ReflectionNamedType", class_ReflectionNamedType_methods);
- reflection_init_class_handlers(&_reflection_entry);
- reflection_named_type_ptr = zend_register_internal_class_ex(&_reflection_entry, reflection_type_ptr);
-
- INIT_CLASS_ENTRY(_reflection_entry, "ReflectionUnionType", class_ReflectionUnionType_methods);
- reflection_init_class_handlers(&_reflection_entry);
- reflection_union_type_ptr = zend_register_internal_class_ex(&_reflection_entry, reflection_type_ptr);
-
- INIT_CLASS_ENTRY(_reflection_entry, "ReflectionMethod", class_ReflectionMethod_methods);
- reflection_init_class_handlers(&_reflection_entry);
- reflection_method_ptr = zend_register_internal_class_ex(&_reflection_entry, reflection_function_abstract_ptr);
- zend_declare_property_string(reflection_method_ptr, "name", sizeof("name")-1, "", ZEND_ACC_PUBLIC);
- zend_declare_property_string(reflection_method_ptr, "class", sizeof("class")-1, "", ZEND_ACC_PUBLIC);
+ reflection_generator_ptr = register_class_ReflectionGenerator();
+ reflection_init_class_handlers(reflection_generator_ptr);
+
+ reflection_parameter_ptr = register_class_ReflectionParameter(reflector_ptr);
+ reflection_init_class_handlers(reflection_parameter_ptr);
+
+ reflection_type_ptr = register_class_ReflectionType(zend_ce_stringable);
+ reflection_init_class_handlers(reflection_type_ptr);
+
+ reflection_named_type_ptr = register_class_ReflectionNamedType(reflection_type_ptr);
+ reflection_init_class_handlers(reflection_named_type_ptr);
+
+ reflection_union_type_ptr = register_class_ReflectionUnionType(reflection_type_ptr);
+ reflection_init_class_handlers(reflection_union_type_ptr);
+
+ reflection_method_ptr = register_class_ReflectionMethod(reflection_function_abstract_ptr);
+ reflection_init_class_handlers(reflection_method_ptr);
REGISTER_REFLECTION_CLASS_CONST_LONG(method, "IS_STATIC", ZEND_ACC_STATIC);
REGISTER_REFLECTION_CLASS_CONST_LONG(method, "IS_PUBLIC", ZEND_ACC_PUBLIC);
@@ -6581,65 +6557,43 @@ PHP_MINIT_FUNCTION(reflection) /* {{{ */
REGISTER_REFLECTION_CLASS_CONST_LONG(method, "IS_ABSTRACT", ZEND_ACC_ABSTRACT);
REGISTER_REFLECTION_CLASS_CONST_LONG(method, "IS_FINAL", ZEND_ACC_FINAL);
- INIT_CLASS_ENTRY(_reflection_entry, "ReflectionClass", class_ReflectionClass_methods);
- reflection_init_class_handlers(&_reflection_entry);
- reflection_class_ptr = zend_register_internal_class(&_reflection_entry);
- zend_class_implements(reflection_class_ptr, 1, reflector_ptr);
- zend_declare_property_string(reflection_class_ptr, "name", sizeof("name")-1, "", ZEND_ACC_PUBLIC);
+ reflection_class_ptr = register_class_ReflectionClass(reflector_ptr);
+ reflection_init_class_handlers(reflection_class_ptr);
/* IS_IMPLICIT_ABSTRACT is not longer used */
REGISTER_REFLECTION_CLASS_CONST_LONG(class, "IS_IMPLICIT_ABSTRACT", ZEND_ACC_IMPLICIT_ABSTRACT_CLASS);
REGISTER_REFLECTION_CLASS_CONST_LONG(class, "IS_EXPLICIT_ABSTRACT", ZEND_ACC_EXPLICIT_ABSTRACT_CLASS);
REGISTER_REFLECTION_CLASS_CONST_LONG(class, "IS_FINAL", ZEND_ACC_FINAL);
- INIT_CLASS_ENTRY(_reflection_entry, "ReflectionObject", class_ReflectionObject_methods);
- reflection_init_class_handlers(&_reflection_entry);
- reflection_object_ptr = zend_register_internal_class_ex(&_reflection_entry, reflection_class_ptr);
+ reflection_object_ptr = register_class_ReflectionObject(reflection_class_ptr);
+ reflection_init_class_handlers(reflection_object_ptr);
- INIT_CLASS_ENTRY(_reflection_entry, "ReflectionProperty", class_ReflectionProperty_methods);
- reflection_init_class_handlers(&_reflection_entry);
- reflection_property_ptr = zend_register_internal_class(&_reflection_entry);
- zend_class_implements(reflection_property_ptr, 1, reflector_ptr);
- zend_declare_property_string(reflection_property_ptr, "name", sizeof("name")-1, "", ZEND_ACC_PUBLIC);
- zend_declare_property_string(reflection_property_ptr, "class", sizeof("class")-1, "", ZEND_ACC_PUBLIC);
+ reflection_property_ptr = register_class_ReflectionProperty(reflector_ptr);
+ reflection_init_class_handlers(reflection_property_ptr);
REGISTER_REFLECTION_CLASS_CONST_LONG(property, "IS_STATIC", ZEND_ACC_STATIC);
REGISTER_REFLECTION_CLASS_CONST_LONG(property, "IS_PUBLIC", ZEND_ACC_PUBLIC);
REGISTER_REFLECTION_CLASS_CONST_LONG(property, "IS_PROTECTED", ZEND_ACC_PROTECTED);
REGISTER_REFLECTION_CLASS_CONST_LONG(property, "IS_PRIVATE", ZEND_ACC_PRIVATE);
- INIT_CLASS_ENTRY(_reflection_entry, "ReflectionClassConstant", class_ReflectionClassConstant_methods);
- reflection_init_class_handlers(&_reflection_entry);
- reflection_class_constant_ptr = zend_register_internal_class(&_reflection_entry);
- zend_class_implements(reflection_class_constant_ptr, 1, reflector_ptr);
- zend_declare_property_string(reflection_class_constant_ptr, "name", sizeof("name")-1, "", ZEND_ACC_PUBLIC);
- zend_declare_property_string(reflection_class_constant_ptr, "class", sizeof("class")-1, "", ZEND_ACC_PUBLIC);
+ reflection_class_constant_ptr = register_class_ReflectionClassConstant(reflector_ptr);
+ reflection_init_class_handlers(reflection_class_constant_ptr);
REGISTER_REFLECTION_CLASS_CONST_LONG(class_constant, "IS_PUBLIC", ZEND_ACC_PUBLIC);
REGISTER_REFLECTION_CLASS_CONST_LONG(class_constant, "IS_PROTECTED", ZEND_ACC_PROTECTED);
REGISTER_REFLECTION_CLASS_CONST_LONG(class_constant, "IS_PRIVATE", ZEND_ACC_PRIVATE);
- INIT_CLASS_ENTRY(_reflection_entry, "ReflectionExtension", class_ReflectionExtension_methods);
- reflection_init_class_handlers(&_reflection_entry);
- reflection_extension_ptr = zend_register_internal_class(&_reflection_entry);
- zend_class_implements(reflection_extension_ptr, 1, reflector_ptr);
- zend_declare_property_string(reflection_extension_ptr, "name", sizeof("name")-1, "", ZEND_ACC_PUBLIC);
-
- INIT_CLASS_ENTRY(_reflection_entry, "ReflectionZendExtension", class_ReflectionZendExtension_methods);
- reflection_init_class_handlers(&_reflection_entry);
- reflection_zend_extension_ptr = zend_register_internal_class(&_reflection_entry);
- zend_class_implements(reflection_zend_extension_ptr, 1, reflector_ptr);
- zend_declare_property_string(reflection_zend_extension_ptr, "name", sizeof("name")-1, "", ZEND_ACC_PUBLIC);
-
- INIT_CLASS_ENTRY(_reflection_entry, "ReflectionReference", class_ReflectionReference_methods);
- reflection_init_class_handlers(&_reflection_entry);
- _reflection_entry.ce_flags |= ZEND_ACC_FINAL;
- reflection_reference_ptr = zend_register_internal_class(&_reflection_entry);
-
- INIT_CLASS_ENTRY(_reflection_entry, "ReflectionAttribute", class_ReflectionAttribute_methods);
- reflection_init_class_handlers(&_reflection_entry);
- _reflection_entry.ce_flags |= ZEND_ACC_FINAL;
- reflection_attribute_ptr = zend_register_internal_class(&_reflection_entry);
+ reflection_extension_ptr = register_class_ReflectionExtension(reflector_ptr);
+ reflection_init_class_handlers(reflection_extension_ptr);
+
+ reflection_zend_extension_ptr = register_class_ReflectionZendExtension(reflector_ptr);
+ reflection_init_class_handlers(reflection_zend_extension_ptr);
+
+ reflection_reference_ptr = register_class_ReflectionReference();
+ reflection_init_class_handlers(reflection_reference_ptr);
+
+ reflection_attribute_ptr = register_class_ReflectionAttribute();
+ reflection_init_class_handlers(reflection_attribute_ptr);
REGISTER_REFLECTION_CLASS_CONST_LONG(attribute, "IS_INSTANCEOF", REFLECTION_ATTRIBUTE_IS_INSTANCEOF);
diff --git a/ext/reflection/php_reflection.stub.php b/ext/reflection/php_reflection.stub.php
index d12d10bd81..8a67c43a99 100644
--- a/ext/reflection/php_reflection.stub.php
+++ b/ext/reflection/php_reflection.stub.php
@@ -1,6 +1,6 @@
<?php
-/** @generate-function-entries */
+/** @generate-class-entries */
class ReflectionException extends Exception
{
@@ -18,6 +18,9 @@ interface Reflector extends Stringable
abstract class ReflectionFunctionAbstract implements Reflector
{
+ /** @var string */
+ public $name = "";
+
/** @implementation-alias ReflectionClass::__clone */
final private function __clone(): void {}
@@ -147,6 +150,9 @@ final class ReflectionGenerator
class ReflectionMethod extends ReflectionFunctionAbstract
{
+ /** @var string */
+ public $class = "";
+
public function __construct(object|string $objectOrMethod, ?string $method = null) {}
public function __toString(): string {}
@@ -199,6 +205,9 @@ class ReflectionMethod extends ReflectionFunctionAbstract
class ReflectionClass implements Reflector
{
+ /** @var string */
+ public $name = "";
+
final private function __clone(): void {}
public function __construct(object|string $objectOrClass) {}
@@ -369,6 +378,12 @@ class ReflectionObject extends ReflectionClass
class ReflectionProperty implements Reflector
{
+ /** @var string */
+ public $name = "";
+
+ /** @var string */
+ public $class = "";
+
/** @implementation-alias ReflectionClass::__clone */
final private function __clone(): void {}
@@ -434,6 +449,12 @@ class ReflectionProperty implements Reflector
class ReflectionClassConstant implements Reflector
{
+ /** @var string */
+ public $name = "";
+
+ /** @var string */
+ public $class = "";
+
/** @implementation-alias ReflectionClass::__clone */
final private function __clone(): void {}
@@ -471,6 +492,9 @@ class ReflectionClassConstant implements Reflector
class ReflectionParameter implements Reflector
{
+ /** @var string */
+ public $name = "";
+
/** @implementation-alias ReflectionClass::__clone */
final private function __clone(): void {}
@@ -575,6 +599,9 @@ class ReflectionUnionType extends ReflectionType
class ReflectionExtension implements Reflector
{
+ /** @var string */
+ public $name = "";
+
/** @implementation-alias ReflectionClass::__clone */
final private function __clone(): void {}
@@ -618,6 +645,9 @@ class ReflectionExtension implements Reflector
class ReflectionZendExtension implements Reflector
{
+ /** @var string */
+ public $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 ba524b4f6d..ebc488a138 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: 6849bff1f2b343df4bd7e6da9c8adc555731e2d3 */
+ * Stub hash: 5c4f082e36118b7a955cc1d6b1fda385dd7c0bc0 */
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_Reflection_getModifierNames, 0, 0, 1)
ZEND_ARG_TYPE_INFO(0, modifiers, IS_LONG, 0)
@@ -994,3 +994,268 @@ static const zend_function_entry class_ReflectionAttribute_methods[] = {
ZEND_ME(ReflectionAttribute, __construct, arginfo_class_ReflectionAttribute___construct, ZEND_ACC_PRIVATE)
ZEND_FE_END
};
+
+zend_class_entry *register_class_ReflectionException(zend_class_entry *class_entry_Exception)
+{
+ zend_class_entry ce, *class_entry;
+
+ INIT_CLASS_ENTRY(ce, "ReflectionException", class_ReflectionException_methods);
+ class_entry = zend_register_internal_class_ex(&ce, class_entry_Exception);
+
+ return class_entry;
+}
+
+zend_class_entry *register_class_Reflection()
+{
+ zend_class_entry ce, *class_entry;
+
+ INIT_CLASS_ENTRY(ce, "Reflection", class_Reflection_methods);
+ class_entry = zend_register_internal_class_ex(&ce, NULL);
+
+ return class_entry;
+}
+
+zend_class_entry *register_class_Reflector(zend_class_entry *class_entry_Stringable)
+{
+ zend_class_entry ce, *class_entry;
+
+ INIT_CLASS_ENTRY(ce, "Reflector", class_Reflector_methods);
+ class_entry = zend_register_internal_interface(&ce);
+ zend_class_implements(class_entry, 1, class_entry_Stringable);
+
+ return class_entry;
+}
+
+zend_class_entry *register_class_ReflectionFunctionAbstract(zend_class_entry *class_entry_Reflector)
+{
+ zend_class_entry ce, *class_entry;
+
+ INIT_CLASS_ENTRY(ce, "ReflectionFunctionAbstract", class_ReflectionFunctionAbstract_methods);
+ class_entry = zend_register_internal_class_ex(&ce, NULL);
+ class_entry->ce_flags |= ZEND_ACC_ABSTRACT;
+ zend_class_implements(class_entry, 1, class_entry_Reflector);
+
+ zval property_name_default_value;
+ ZVAL_EMPTY_STRING(&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_string_release(property_name_name);
+
+ return class_entry;
+}
+
+zend_class_entry *register_class_ReflectionFunction(zend_class_entry *class_entry_ReflectionFunctionAbstract)
+{
+ zend_class_entry ce, *class_entry;
+
+ INIT_CLASS_ENTRY(ce, "ReflectionFunction", class_ReflectionFunction_methods);
+ class_entry = zend_register_internal_class_ex(&ce, class_entry_ReflectionFunctionAbstract);
+
+ return class_entry;
+}
+
+zend_class_entry *register_class_ReflectionGenerator()
+{
+ zend_class_entry ce, *class_entry;
+
+ INIT_CLASS_ENTRY(ce, "ReflectionGenerator", class_ReflectionGenerator_methods);
+ class_entry = zend_register_internal_class_ex(&ce, NULL);
+ class_entry->ce_flags |= ZEND_ACC_FINAL;
+
+ return class_entry;
+}
+
+zend_class_entry *register_class_ReflectionMethod(zend_class_entry *class_entry_ReflectionFunctionAbstract)
+{
+ zend_class_entry ce, *class_entry;
+
+ INIT_CLASS_ENTRY(ce, "ReflectionMethod", class_ReflectionMethod_methods);
+ class_entry = zend_register_internal_class_ex(&ce, class_entry_ReflectionFunctionAbstract);
+
+ zval property_class_default_value;
+ ZVAL_EMPTY_STRING(&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_string_release(property_class_name);
+
+ return class_entry;
+}
+
+zend_class_entry *register_class_ReflectionClass(zend_class_entry *class_entry_Reflector)
+{
+ zend_class_entry ce, *class_entry;
+
+ INIT_CLASS_ENTRY(ce, "ReflectionClass", class_ReflectionClass_methods);
+ class_entry = zend_register_internal_class_ex(&ce, NULL);
+ zend_class_implements(class_entry, 1, class_entry_Reflector);
+
+ zval property_name_default_value;
+ ZVAL_EMPTY_STRING(&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_string_release(property_name_name);
+
+ return class_entry;
+}
+
+zend_class_entry *register_class_ReflectionObject(zend_class_entry *class_entry_ReflectionClass)
+{
+ zend_class_entry ce, *class_entry;
+
+ INIT_CLASS_ENTRY(ce, "ReflectionObject", class_ReflectionObject_methods);
+ class_entry = zend_register_internal_class_ex(&ce, class_entry_ReflectionClass);
+
+ return class_entry;
+}
+
+zend_class_entry *register_class_ReflectionProperty(zend_class_entry *class_entry_Reflector)
+{
+ zend_class_entry ce, *class_entry;
+
+ INIT_CLASS_ENTRY(ce, "ReflectionProperty", class_ReflectionProperty_methods);
+ class_entry = zend_register_internal_class_ex(&ce, NULL);
+ zend_class_implements(class_entry, 1, class_entry_Reflector);
+
+ zval property_name_default_value;
+ ZVAL_EMPTY_STRING(&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_string_release(property_name_name);
+
+ zval property_class_default_value;
+ ZVAL_EMPTY_STRING(&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_string_release(property_class_name);
+
+ return class_entry;
+}
+
+zend_class_entry *register_class_ReflectionClassConstant(zend_class_entry *class_entry_Reflector)
+{
+ zend_class_entry ce, *class_entry;
+
+ INIT_CLASS_ENTRY(ce, "ReflectionClassConstant", class_ReflectionClassConstant_methods);
+ class_entry = zend_register_internal_class_ex(&ce, NULL);
+ zend_class_implements(class_entry, 1, class_entry_Reflector);
+
+ zval property_name_default_value;
+ ZVAL_EMPTY_STRING(&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_string_release(property_name_name);
+
+ zval property_class_default_value;
+ ZVAL_EMPTY_STRING(&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_string_release(property_class_name);
+
+ return class_entry;
+}
+
+zend_class_entry *register_class_ReflectionParameter(zend_class_entry *class_entry_Reflector)
+{
+ zend_class_entry ce, *class_entry;
+
+ INIT_CLASS_ENTRY(ce, "ReflectionParameter", class_ReflectionParameter_methods);
+ class_entry = zend_register_internal_class_ex(&ce, NULL);
+ zend_class_implements(class_entry, 1, class_entry_Reflector);
+
+ zval property_name_default_value;
+ ZVAL_EMPTY_STRING(&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_string_release(property_name_name);
+
+ return class_entry;
+}
+
+zend_class_entry *register_class_ReflectionType(zend_class_entry *class_entry_Stringable)
+{
+ zend_class_entry ce, *class_entry;
+
+ INIT_CLASS_ENTRY(ce, "ReflectionType", class_ReflectionType_methods);
+ class_entry = zend_register_internal_class_ex(&ce, NULL);
+ class_entry->ce_flags |= ZEND_ACC_ABSTRACT;
+ zend_class_implements(class_entry, 1, class_entry_Stringable);
+
+ return class_entry;
+}
+
+zend_class_entry *register_class_ReflectionNamedType(zend_class_entry *class_entry_ReflectionType)
+{
+ zend_class_entry ce, *class_entry;
+
+ INIT_CLASS_ENTRY(ce, "ReflectionNamedType", class_ReflectionNamedType_methods);
+ class_entry = zend_register_internal_class_ex(&ce, class_entry_ReflectionType);
+
+ return class_entry;
+}
+
+zend_class_entry *register_class_ReflectionUnionType(zend_class_entry *class_entry_ReflectionType)
+{
+ zend_class_entry ce, *class_entry;
+
+ INIT_CLASS_ENTRY(ce, "ReflectionUnionType", class_ReflectionUnionType_methods);
+ class_entry = zend_register_internal_class_ex(&ce, class_entry_ReflectionType);
+
+ return class_entry;
+}
+
+zend_class_entry *register_class_ReflectionExtension(zend_class_entry *class_entry_Reflector)
+{
+ zend_class_entry ce, *class_entry;
+
+ INIT_CLASS_ENTRY(ce, "ReflectionExtension", class_ReflectionExtension_methods);
+ class_entry = zend_register_internal_class_ex(&ce, NULL);
+ zend_class_implements(class_entry, 1, class_entry_Reflector);
+
+ zval property_name_default_value;
+ ZVAL_EMPTY_STRING(&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_string_release(property_name_name);
+
+ return class_entry;
+}
+
+zend_class_entry *register_class_ReflectionZendExtension(zend_class_entry *class_entry_Reflector)
+{
+ zend_class_entry ce, *class_entry;
+
+ INIT_CLASS_ENTRY(ce, "ReflectionZendExtension", class_ReflectionZendExtension_methods);
+ class_entry = zend_register_internal_class_ex(&ce, NULL);
+ zend_class_implements(class_entry, 1, class_entry_Reflector);
+
+ zval property_name_default_value;
+ ZVAL_EMPTY_STRING(&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_string_release(property_name_name);
+
+ return class_entry;
+}
+
+zend_class_entry *register_class_ReflectionReference()
+{
+ zend_class_entry ce, *class_entry;
+
+ INIT_CLASS_ENTRY(ce, "ReflectionReference", class_ReflectionReference_methods);
+ class_entry = zend_register_internal_class_ex(&ce, NULL);
+ class_entry->ce_flags |= ZEND_ACC_FINAL;
+
+ return class_entry;
+}
+
+zend_class_entry *register_class_ReflectionAttribute()
+{
+ zend_class_entry ce, *class_entry;
+
+ INIT_CLASS_ENTRY(ce, "ReflectionAttribute", class_ReflectionAttribute_methods);
+ class_entry = zend_register_internal_class_ex(&ce, NULL);
+ class_entry->ce_flags |= ZEND_ACC_FINAL;
+
+ return class_entry;
+}
+