From 5b5bfd6be48de4601d508fa5b8a7a572dda6b8bc Mon Sep 17 00:00:00 2001 From: =?utf8?q?M=C3=A1t=C3=A9=20Kocsis?= Date: Sun, 14 Feb 2021 15:21:24 +0100 Subject: [PATCH] Generate class entries from stubs for phar, posix, pspell, readline, reflection, session, shmop Closes GH-6692 --- ext/phar/phar_object.c | 18 +- ext/phar/phar_object.stub.php | 2 +- ext/phar/phar_object_arginfo.h | 45 +++- ext/posix/posix.stub.php | 2 +- ext/posix/posix_arginfo.h | 3 +- ext/pspell/pspell.c | 9 +- ext/pspell/pspell.stub.php | 4 +- ext/pspell/pspell_arginfo.h | 25 ++- ext/readline/readline.stub.php | 2 +- ext/readline/readline_arginfo.h | 3 +- ext/reflection/php_reflection.c | 132 ++++-------- ext/reflection/php_reflection.stub.php | 32 ++- ext/reflection/php_reflection_arginfo.h | 267 +++++++++++++++++++++++- ext/session/php_session.h | 4 - ext/session/session.c | 19 +- ext/session/session.stub.php | 2 +- ext/session/session_arginfo.h | 44 +++- ext/shmop/shmop.c | 5 +- ext/shmop/shmop.stub.php | 3 +- ext/shmop/shmop_arginfo.h | 14 +- 20 files changed, 488 insertions(+), 147 deletions(-) diff --git a/ext/phar/phar_object.c b/ext/phar/phar_object.c index 5ecf7a2ba9..07c5abd198 100644 --- a/ext/phar/phar_object.c +++ b/ext/phar/phar_object.c @@ -5074,23 +5074,13 @@ PHP_METHOD(PharFileInfo, decompress) void phar_object_init(void) /* {{{ */ { - zend_class_entry ce; + phar_ce_PharException = register_class_PharException(zend_ce_exception); - INIT_CLASS_ENTRY(ce, "PharException", class_PharException_methods); - phar_ce_PharException = zend_register_internal_class_ex(&ce, zend_ce_exception); + phar_ce_archive = register_class_Phar(spl_ce_RecursiveDirectoryIterator, zend_ce_countable, zend_ce_arrayaccess); - INIT_CLASS_ENTRY(ce, "Phar", class_Phar_methods); - phar_ce_archive = zend_register_internal_class_ex(&ce, spl_ce_RecursiveDirectoryIterator); + phar_ce_data = register_class_PharData(spl_ce_RecursiveDirectoryIterator, zend_ce_countable, zend_ce_arrayaccess); - zend_class_implements(phar_ce_archive, 2, zend_ce_countable, zend_ce_arrayaccess); - - INIT_CLASS_ENTRY(ce, "PharData", class_PharData_methods); - phar_ce_data = zend_register_internal_class_ex(&ce, spl_ce_RecursiveDirectoryIterator); - - zend_class_implements(phar_ce_data, 2, zend_ce_countable, zend_ce_arrayaccess); - - INIT_CLASS_ENTRY(ce, "PharFileInfo", class_PharFileInfo_methods); - phar_ce_entry = zend_register_internal_class_ex(&ce, spl_ce_SplFileInfo); + phar_ce_entry = register_class_PharFileInfo(spl_ce_SplFileInfo); REGISTER_PHAR_CLASS_CONST_LONG(phar_ce_archive, "BZ2", PHAR_ENT_COMPRESSED_BZ2) REGISTER_PHAR_CLASS_CONST_LONG(phar_ce_archive, "GZ", PHAR_ENT_COMPRESSED_GZ) diff --git a/ext/phar/phar_object.stub.php b/ext/phar/phar_object.stub.php index b8e428028e..2e2a83a352 100644 --- a/ext/phar/phar_object.stub.php +++ b/ext/phar/phar_object.stub.php @@ -1,6 +1,6 @@ ce_flags |= ZEND_ACC_FINAL | ZEND_ACC_NO_DYNAMIC_PROPERTIES; + php_pspell_ce = register_class_PSpell(); php_pspell_ce->create_object = php_pspell_object_create; php_pspell_ce->serialize = zend_class_serialize_deny; php_pspell_ce->unserialize = zend_class_unserialize_deny; @@ -164,9 +161,7 @@ static PHP_MINIT_FUNCTION(pspell) php_pspell_handlers.get_constructor = php_pspell_object_get_constructor; php_pspell_handlers.offset = XtOffsetOf(php_pspell_object, std); - INIT_CLASS_ENTRY(ce, "PSpellConfig", class_PSpellConfig_methods); - php_pspell_config_ce = zend_register_internal_class(&ce); - php_pspell_config_ce->ce_flags |= ZEND_ACC_FINAL | ZEND_ACC_NO_DYNAMIC_PROPERTIES; + php_pspell_config_ce = register_class_PSpellConfig(); php_pspell_config_ce->create_object = php_pspell_config_object_create; php_pspell_config_ce->serialize = zend_class_serialize_deny; php_pspell_config_ce->unserialize = zend_class_unserialize_deny; diff --git a/ext/pspell/pspell.stub.php b/ext/pspell/pspell.stub.php index a10de4b9f9..40a2a73097 100644 --- a/ext/pspell/pspell.stub.php +++ b/ext/pspell/pspell.stub.php @@ -1,8 +1,10 @@ ce_flags |= ZEND_ACC_FINAL|ZEND_ACC_NO_DYNAMIC_PROPERTIES; + + return class_entry; +} + +zend_class_entry *register_class_PSpellConfig() +{ + zend_class_entry ce, *class_entry; + + INIT_CLASS_ENTRY(ce, "PSpellConfig", class_PSpellConfig_methods); + class_entry = zend_register_internal_class_ex(&ce, NULL); + class_entry->ce_flags |= ZEND_ACC_FINAL|ZEND_ACC_NO_DYNAMIC_PROPERTIES; + + return class_entry; +} + diff --git a/ext/readline/readline.stub.php b/ext/readline/readline.stub.php index cfc1d0d8d5..26f5755923 100644 --- a/ext/readline/readline.stub.php +++ b/ext/readline/readline.stub.php @@ -1,6 +1,6 @@ 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 @@ 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; +} + diff --git a/ext/session/php_session.h b/ext/session/php_session.h index a18b075dab..1a2bc9164f 100644 --- a/ext/session/php_session.h +++ b/ext/session/php_session.h @@ -305,16 +305,12 @@ PHPAPI ZEND_EXTERN_MODULE_GLOBALS(ps) void php_session_auto_start(void *data); -#define PS_CLASS_NAME "SessionHandler" extern PHPAPI zend_class_entry *php_session_class_entry; -#define PS_IFACE_NAME "SessionHandlerInterface" extern PHPAPI zend_class_entry *php_session_iface_entry; -#define PS_SID_IFACE_NAME "SessionIdInterface" extern PHPAPI zend_class_entry *php_session_id_iface_entry; -#define PS_UPDATE_TIMESTAMP_IFACE_NAME "SessionUpdateTimestampHandlerInterface" extern PHPAPI zend_class_entry *php_session_update_timestamp_iface_entry; extern PHP_METHOD(SessionHandler, open); diff --git a/ext/session/session.c b/ext/session/session.c index 5eda7eae8e..7a78c87805 100644 --- a/ext/session/session.c +++ b/ext/session/session.c @@ -2779,8 +2779,6 @@ static PHP_GINIT_FUNCTION(ps) /* {{{ */ static PHP_MINIT_FUNCTION(session) /* {{{ */ { - zend_class_entry ce; - zend_register_auto_global(zend_string_init_interned("_SESSION", sizeof("_SESSION") - 1, 1), 0, NULL); my_module_number = module_number; @@ -2796,23 +2794,14 @@ static PHP_MINIT_FUNCTION(session) /* {{{ */ php_rfc1867_callback = php_session_rfc1867_callback; /* Register interfaces */ - INIT_CLASS_ENTRY(ce, PS_IFACE_NAME, class_SessionHandlerInterface_methods); - php_session_iface_entry = zend_register_internal_class(&ce); - php_session_iface_entry->ce_flags |= ZEND_ACC_INTERFACE; + php_session_iface_entry = register_class_SessionHandlerInterface(); - INIT_CLASS_ENTRY(ce, PS_SID_IFACE_NAME, class_SessionIdInterface_methods); - php_session_id_iface_entry = zend_register_internal_class(&ce); - php_session_id_iface_entry->ce_flags |= ZEND_ACC_INTERFACE; + php_session_id_iface_entry = register_class_SessionIdInterface(); - INIT_CLASS_ENTRY(ce, PS_UPDATE_TIMESTAMP_IFACE_NAME, class_SessionUpdateTimestampHandlerInterface_methods); - php_session_update_timestamp_iface_entry = zend_register_internal_class(&ce); - php_session_update_timestamp_iface_entry->ce_flags |= ZEND_ACC_INTERFACE; + php_session_update_timestamp_iface_entry = register_class_SessionUpdateTimestampHandlerInterface(); /* Register base class */ - INIT_CLASS_ENTRY(ce, PS_CLASS_NAME, class_SessionHandler_methods); - php_session_class_entry = zend_register_internal_class(&ce); - zend_class_implements(php_session_class_entry, 1, php_session_iface_entry); - zend_class_implements(php_session_class_entry, 1, php_session_id_iface_entry); + php_session_class_entry = register_class_SessionHandler(php_session_iface_entry, php_session_id_iface_entry); REGISTER_LONG_CONSTANT("PHP_SESSION_DISABLED", php_session_disabled, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("PHP_SESSION_NONE", php_session_none, CONST_CS | CONST_PERSISTENT); diff --git a/ext/session/session.stub.php b/ext/session/session.stub.php index d8c9b67e50..c8f7308b13 100644 --- a/ext/session/session.stub.php +++ b/ext/session/session.stub.php @@ -1,6 +1,6 @@ ce_flags |= ZEND_ACC_FINAL | ZEND_ACC_NO_DYNAMIC_PROPERTIES; + shmop_ce = register_class_Shmop(); shmop_ce->create_object = shmop_create_object; shmop_ce->serialize = zend_class_serialize_deny; shmop_ce->unserialize = zend_class_unserialize_deny; diff --git a/ext/shmop/shmop.stub.php b/ext/shmop/shmop.stub.php index 9485953502..dcf3e5ab03 100644 --- a/ext/shmop/shmop.stub.php +++ b/ext/shmop/shmop.stub.php @@ -1,7 +1,8 @@ ce_flags |= ZEND_ACC_FINAL|ZEND_ACC_NO_DYNAMIC_PROPERTIES; + + return class_entry; +} + -- 2.50.1