Declare ext/reflection constants in stubs (#9111)

This commit is contained in:
Máté Kocsis 2022-07-23 12:59:30 +02:00 committed by GitHub
parent c854816b65
commit e4d79ce24c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 242 additions and 35 deletions

View file

@ -45,6 +45,9 @@
#include "zend_smart_str.h" #include "zend_smart_str.h"
#include "zend_enum.h" #include "zend_enum.h"
#include "zend_fibers.h" #include "zend_fibers.h"
#define REFLECTION_ATTRIBUTE_IS_INSTANCEOF (1 << 1)
#include "php_reflection_arginfo.h" #include "php_reflection_arginfo.h"
/* Key used to avoid leaking addresses in ReflectionProperty::getId() */ /* Key used to avoid leaking addresses in ReflectionProperty::getId() */
@ -115,12 +118,6 @@ PHPAPI zend_class_entry *reflection_fiber_ptr;
target = intern->ptr; \ target = intern->ptr; \
} while (0) } while (0)
/* Class constants */
#define REGISTER_REFLECTION_CLASS_CONST_LONG(class_name, const_name, value) \
zend_declare_class_constant_long(reflection_ ## class_name ## _ptr, const_name, sizeof(const_name)-1, (zend_long)value);
#define REFLECTION_ATTRIBUTE_IS_INSTANCEOF (1 << 1)
/* {{{ Object structure */ /* {{{ Object structure */
/* Struct for properties */ /* Struct for properties */
@ -7135,8 +7132,6 @@ PHP_MINIT_FUNCTION(reflection) /* {{{ */
reflection_function_ptr = register_class_ReflectionFunction(reflection_function_abstract_ptr); reflection_function_ptr = register_class_ReflectionFunction(reflection_function_abstract_ptr);
reflection_function_ptr->create_object = reflection_objects_new; reflection_function_ptr->create_object = reflection_objects_new;
REGISTER_REFLECTION_CLASS_CONST_LONG(function, "IS_DEPRECATED", ZEND_ACC_DEPRECATED);
reflection_generator_ptr = register_class_ReflectionGenerator(); reflection_generator_ptr = register_class_ReflectionGenerator();
reflection_generator_ptr->create_object = reflection_objects_new; reflection_generator_ptr->create_object = reflection_objects_new;
@ -7158,42 +7153,18 @@ PHP_MINIT_FUNCTION(reflection) /* {{{ */
reflection_method_ptr = register_class_ReflectionMethod(reflection_function_abstract_ptr); reflection_method_ptr = register_class_ReflectionMethod(reflection_function_abstract_ptr);
reflection_method_ptr->create_object = reflection_objects_new; reflection_method_ptr->create_object = reflection_objects_new;
REGISTER_REFLECTION_CLASS_CONST_LONG(method, "IS_STATIC", ZEND_ACC_STATIC);
REGISTER_REFLECTION_CLASS_CONST_LONG(method, "IS_PUBLIC", ZEND_ACC_PUBLIC);
REGISTER_REFLECTION_CLASS_CONST_LONG(method, "IS_PROTECTED", ZEND_ACC_PROTECTED);
REGISTER_REFLECTION_CLASS_CONST_LONG(method, "IS_PRIVATE", ZEND_ACC_PRIVATE);
REGISTER_REFLECTION_CLASS_CONST_LONG(method, "IS_ABSTRACT", ZEND_ACC_ABSTRACT);
REGISTER_REFLECTION_CLASS_CONST_LONG(method, "IS_FINAL", ZEND_ACC_FINAL);
reflection_class_ptr = register_class_ReflectionClass(reflector_ptr); reflection_class_ptr = register_class_ReflectionClass(reflector_ptr);
reflection_class_ptr->create_object = reflection_objects_new; reflection_class_ptr->create_object = reflection_objects_new;
/* 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);
REGISTER_REFLECTION_CLASS_CONST_LONG(class, "IS_READONLY", ZEND_ACC_READONLY_CLASS);
reflection_object_ptr = register_class_ReflectionObject(reflection_class_ptr); reflection_object_ptr = register_class_ReflectionObject(reflection_class_ptr);
reflection_object_ptr->create_object = reflection_objects_new; reflection_object_ptr->create_object = reflection_objects_new;
reflection_property_ptr = register_class_ReflectionProperty(reflector_ptr); reflection_property_ptr = register_class_ReflectionProperty(reflector_ptr);
reflection_property_ptr->create_object = reflection_objects_new; reflection_property_ptr->create_object = reflection_objects_new;
REGISTER_REFLECTION_CLASS_CONST_LONG(property, "IS_STATIC", ZEND_ACC_STATIC);
REGISTER_REFLECTION_CLASS_CONST_LONG(property, "IS_READONLY", ZEND_ACC_READONLY);
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);
reflection_class_constant_ptr = register_class_ReflectionClassConstant(reflector_ptr); reflection_class_constant_ptr = register_class_ReflectionClassConstant(reflector_ptr);
reflection_class_constant_ptr->create_object = reflection_objects_new; reflection_class_constant_ptr->create_object = reflection_objects_new;
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);
REGISTER_REFLECTION_CLASS_CONST_LONG(class_constant, "IS_FINAL", ZEND_ACC_FINAL);
reflection_extension_ptr = register_class_ReflectionExtension(reflector_ptr); reflection_extension_ptr = register_class_ReflectionExtension(reflector_ptr);
reflection_extension_ptr->create_object = reflection_objects_new; reflection_extension_ptr->create_object = reflection_objects_new;
@ -7218,8 +7189,6 @@ PHP_MINIT_FUNCTION(reflection) /* {{{ */
reflection_fiber_ptr = register_class_ReflectionFiber(); reflection_fiber_ptr = register_class_ReflectionFiber();
reflection_fiber_ptr->create_object = reflection_objects_new; reflection_fiber_ptr->create_object = reflection_objects_new;
REGISTER_REFLECTION_CLASS_CONST_LONG(attribute, "IS_INSTANCEOF", REFLECTION_ATTRIBUTE_IS_INSTANCEOF);
REFLECTION_G(key_initialized) = 0; REFLECTION_G(key_initialized) = 0;
return SUCCESS; return SUCCESS;

View file

@ -113,6 +113,12 @@ abstract class ReflectionFunctionAbstract implements Reflector
class ReflectionFunction extends ReflectionFunctionAbstract class ReflectionFunction extends ReflectionFunctionAbstract
{ {
/**
* @var int
* @cvalue ZEND_ACC_DEPRECATED
*/
public const IS_DEPRECATED = UNKNOWN;
public function __construct(Closure|string $function) {} public function __construct(Closure|string $function) {}
public function __toString(): string {} public function __toString(): string {}
@ -161,6 +167,37 @@ final class ReflectionGenerator
class ReflectionMethod extends ReflectionFunctionAbstract class ReflectionMethod extends ReflectionFunctionAbstract
{ {
/**
* @var int
* @cvalue ZEND_ACC_STATIC
*/
public const IS_STATIC = UNKNOWN;
/**
* @var int
* @cvalue ZEND_ACC_PUBLIC
*/
public const IS_PUBLIC = UNKNOWN;
/**
* @var int
* @cvalue ZEND_ACC_PROTECTED
*/
public const IS_PROTECTED = UNKNOWN;
/**
* @var int
* @cvalue ZEND_ACC_PRIVATE
*/
public const IS_PRIVATE = UNKNOWN;
/**
* @var int
* @cvalue ZEND_ACC_ABSTRACT
*/
public const IS_ABSTRACT = UNKNOWN;
/**
* @var int
* @cvalue ZEND_ACC_FINAL
*/
public const IS_FINAL = UNKNOWN;
public string $class; public string $class;
public function __construct(object|string $objectOrMethod, ?string $method = null) {} public function __construct(object|string $objectOrMethod, ?string $method = null) {}
@ -215,6 +252,28 @@ class ReflectionMethod extends ReflectionFunctionAbstract
/** @not-serializable */ /** @not-serializable */
class ReflectionClass implements Reflector class ReflectionClass implements Reflector
{ {
/**
* @var int
* @cvalue ZEND_ACC_IMPLICIT_ABSTRACT_CLASS
* @todo deprecate
*/
public const IS_IMPLICIT_ABSTRACT = UNKNOWN;
/**
* @var int
* @cvalue ZEND_ACC_EXPLICIT_ABSTRACT_CLASS
*/
public const IS_EXPLICIT_ABSTRACT = UNKNOWN;
/**
* @var int
* @cvalue ZEND_ACC_FINAL
*/
public const IS_FINAL = UNKNOWN;
/**
* @var int
* @cvalue ZEND_ACC_READONLY_CLASS
*/
public const IS_READONLY = UNKNOWN;
public string $name; public string $name;
private function __clone(): void {} private function __clone(): void {}
@ -391,6 +450,32 @@ class ReflectionObject extends ReflectionClass
/** @not-serializable */ /** @not-serializable */
class ReflectionProperty implements Reflector class ReflectionProperty implements Reflector
{ {
/**
* @var int
* @cvalue ZEND_ACC_STATIC
*/
public const IS_STATIC = UNKNOWN;
/**
* @var int
* @cvalue ZEND_ACC_READONLY
*/
public const IS_READONLY = UNKNOWN;
/**
* @var int
* @cvalue ZEND_ACC_PUBLIC
*/
public const IS_PUBLIC = UNKNOWN;
/**
* @var int
* @cvalue ZEND_ACC_PROTECTED
*/
public const IS_PROTECTED = UNKNOWN;
/**
* @var int
* @cvalue ZEND_ACC_PRIVATE
*/
public const IS_PRIVATE = UNKNOWN;
public string $name; public string $name;
public string $class; public string $class;
@ -461,6 +546,27 @@ class ReflectionProperty implements Reflector
/** @not-serializable */ /** @not-serializable */
class ReflectionClassConstant implements Reflector class ReflectionClassConstant implements Reflector
{ {
/**
* @var int
* @cvalue ZEND_ACC_PUBLIC
*/
public const IS_PUBLIC = UNKNOWN;
/**
* @var int
* @cvalue ZEND_ACC_PROTECTED
*/
public const IS_PROTECTED = UNKNOWN;
/**
* @var int
* @cvalue ZEND_ACC_PRIVATE
*/
public const IS_PRIVATE = UNKNOWN;
/**
* @var int
* @cvalue ZEND_ACC_FINAL
*/
public const IS_FINAL = UNKNOWN;
public string $name; public string $name;
public string $class; public string $class;
@ -704,6 +810,12 @@ final class ReflectionReference
/** @not-serializable */ /** @not-serializable */
class ReflectionAttribute implements Reflector class ReflectionAttribute implements Reflector
{ {
/**
* @var int
* @cvalue REFLECTION_ATTRIBUTE_IS_INSTANCEOF
*/
public const IS_INSTANCEOF = UNKNOWN;
public function getName(): string {} public function getName(): string {}
public function getTarget(): int {} public function getTarget(): int {}
public function isRepeated(): bool {} public function isRepeated(): bool {}

View file

@ -1,5 +1,5 @@
/* This is a generated file, edit the .stub.php file instead. /* This is a generated file, edit the .stub.php file instead.
* Stub hash: 9daec020902840b7f678d787e61e91f7e16ad4da */ * Stub hash: 25b36d66ab7fb88b8d44d51e15e530ebff2e1e2c */
ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_Reflection_getModifierNames, 0, 1, IS_ARRAY, 0) ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_Reflection_getModifierNames, 0, 1, IS_ARRAY, 0)
ZEND_ARG_TYPE_INFO(0, modifiers, IS_LONG, 0) ZEND_ARG_TYPE_INFO(0, modifiers, IS_LONG, 0)
@ -1246,6 +1246,12 @@ static zend_class_entry *register_class_ReflectionFunction(zend_class_entry *cla
INIT_CLASS_ENTRY(ce, "ReflectionFunction", class_ReflectionFunction_methods); INIT_CLASS_ENTRY(ce, "ReflectionFunction", class_ReflectionFunction_methods);
class_entry = zend_register_internal_class_ex(&ce, class_entry_ReflectionFunctionAbstract); class_entry = zend_register_internal_class_ex(&ce, class_entry_ReflectionFunctionAbstract);
zval const_IS_DEPRECATED_value;
ZVAL_LONG(&const_IS_DEPRECATED_value, ZEND_ACC_DEPRECATED);
zend_string *const_IS_DEPRECATED_name = zend_string_init_interned("IS_DEPRECATED", sizeof("IS_DEPRECATED") - 1, 1);
zend_declare_class_constant_ex(class_entry, const_IS_DEPRECATED_name, &const_IS_DEPRECATED_value, ZEND_ACC_PUBLIC, NULL);
zend_string_release(const_IS_DEPRECATED_name);
return class_entry; return class_entry;
} }
@ -1267,6 +1273,42 @@ static zend_class_entry *register_class_ReflectionMethod(zend_class_entry *class
INIT_CLASS_ENTRY(ce, "ReflectionMethod", class_ReflectionMethod_methods); INIT_CLASS_ENTRY(ce, "ReflectionMethod", class_ReflectionMethod_methods);
class_entry = zend_register_internal_class_ex(&ce, class_entry_ReflectionFunctionAbstract); class_entry = zend_register_internal_class_ex(&ce, class_entry_ReflectionFunctionAbstract);
zval const_IS_STATIC_value;
ZVAL_LONG(&const_IS_STATIC_value, ZEND_ACC_STATIC);
zend_string *const_IS_STATIC_name = zend_string_init_interned("IS_STATIC", sizeof("IS_STATIC") - 1, 1);
zend_declare_class_constant_ex(class_entry, const_IS_STATIC_name, &const_IS_STATIC_value, ZEND_ACC_PUBLIC, NULL);
zend_string_release(const_IS_STATIC_name);
zval const_IS_PUBLIC_value;
ZVAL_LONG(&const_IS_PUBLIC_value, ZEND_ACC_PUBLIC);
zend_string *const_IS_PUBLIC_name = zend_string_init_interned("IS_PUBLIC", sizeof("IS_PUBLIC") - 1, 1);
zend_declare_class_constant_ex(class_entry, const_IS_PUBLIC_name, &const_IS_PUBLIC_value, ZEND_ACC_PUBLIC, NULL);
zend_string_release(const_IS_PUBLIC_name);
zval const_IS_PROTECTED_value;
ZVAL_LONG(&const_IS_PROTECTED_value, ZEND_ACC_PROTECTED);
zend_string *const_IS_PROTECTED_name = zend_string_init_interned("IS_PROTECTED", sizeof("IS_PROTECTED") - 1, 1);
zend_declare_class_constant_ex(class_entry, const_IS_PROTECTED_name, &const_IS_PROTECTED_value, ZEND_ACC_PUBLIC, NULL);
zend_string_release(const_IS_PROTECTED_name);
zval const_IS_PRIVATE_value;
ZVAL_LONG(&const_IS_PRIVATE_value, ZEND_ACC_PRIVATE);
zend_string *const_IS_PRIVATE_name = zend_string_init_interned("IS_PRIVATE", sizeof("IS_PRIVATE") - 1, 1);
zend_declare_class_constant_ex(class_entry, const_IS_PRIVATE_name, &const_IS_PRIVATE_value, ZEND_ACC_PUBLIC, NULL);
zend_string_release(const_IS_PRIVATE_name);
zval const_IS_ABSTRACT_value;
ZVAL_LONG(&const_IS_ABSTRACT_value, ZEND_ACC_ABSTRACT);
zend_string *const_IS_ABSTRACT_name = zend_string_init_interned("IS_ABSTRACT", sizeof("IS_ABSTRACT") - 1, 1);
zend_declare_class_constant_ex(class_entry, const_IS_ABSTRACT_name, &const_IS_ABSTRACT_value, ZEND_ACC_PUBLIC, NULL);
zend_string_release(const_IS_ABSTRACT_name);
zval const_IS_FINAL_value;
ZVAL_LONG(&const_IS_FINAL_value, ZEND_ACC_FINAL);
zend_string *const_IS_FINAL_name = zend_string_init_interned("IS_FINAL", sizeof("IS_FINAL") - 1, 1);
zend_declare_class_constant_ex(class_entry, const_IS_FINAL_name, &const_IS_FINAL_value, ZEND_ACC_PUBLIC, NULL);
zend_string_release(const_IS_FINAL_name);
zval property_class_default_value; zval property_class_default_value;
ZVAL_UNDEF(&property_class_default_value); ZVAL_UNDEF(&property_class_default_value);
zend_string *property_class_name = zend_string_init("class", sizeof("class") - 1, 1); zend_string *property_class_name = zend_string_init("class", sizeof("class") - 1, 1);
@ -1285,6 +1327,30 @@ static zend_class_entry *register_class_ReflectionClass(zend_class_entry *class_
class_entry->ce_flags |= ZEND_ACC_NOT_SERIALIZABLE; class_entry->ce_flags |= ZEND_ACC_NOT_SERIALIZABLE;
zend_class_implements(class_entry, 1, class_entry_Reflector); zend_class_implements(class_entry, 1, class_entry_Reflector);
zval const_IS_IMPLICIT_ABSTRACT_value;
ZVAL_LONG(&const_IS_IMPLICIT_ABSTRACT_value, ZEND_ACC_IMPLICIT_ABSTRACT_CLASS);
zend_string *const_IS_IMPLICIT_ABSTRACT_name = zend_string_init_interned("IS_IMPLICIT_ABSTRACT", sizeof("IS_IMPLICIT_ABSTRACT") - 1, 1);
zend_declare_class_constant_ex(class_entry, const_IS_IMPLICIT_ABSTRACT_name, &const_IS_IMPLICIT_ABSTRACT_value, ZEND_ACC_PUBLIC, NULL);
zend_string_release(const_IS_IMPLICIT_ABSTRACT_name);
zval const_IS_EXPLICIT_ABSTRACT_value;
ZVAL_LONG(&const_IS_EXPLICIT_ABSTRACT_value, ZEND_ACC_EXPLICIT_ABSTRACT_CLASS);
zend_string *const_IS_EXPLICIT_ABSTRACT_name = zend_string_init_interned("IS_EXPLICIT_ABSTRACT", sizeof("IS_EXPLICIT_ABSTRACT") - 1, 1);
zend_declare_class_constant_ex(class_entry, const_IS_EXPLICIT_ABSTRACT_name, &const_IS_EXPLICIT_ABSTRACT_value, ZEND_ACC_PUBLIC, NULL);
zend_string_release(const_IS_EXPLICIT_ABSTRACT_name);
zval const_IS_FINAL_value;
ZVAL_LONG(&const_IS_FINAL_value, ZEND_ACC_FINAL);
zend_string *const_IS_FINAL_name = zend_string_init_interned("IS_FINAL", sizeof("IS_FINAL") - 1, 1);
zend_declare_class_constant_ex(class_entry, const_IS_FINAL_name, &const_IS_FINAL_value, ZEND_ACC_PUBLIC, NULL);
zend_string_release(const_IS_FINAL_name);
zval const_IS_READONLY_value;
ZVAL_LONG(&const_IS_READONLY_value, ZEND_ACC_READONLY_CLASS);
zend_string *const_IS_READONLY_name = zend_string_init_interned("IS_READONLY", sizeof("IS_READONLY") - 1, 1);
zend_declare_class_constant_ex(class_entry, const_IS_READONLY_name, &const_IS_READONLY_value, ZEND_ACC_PUBLIC, NULL);
zend_string_release(const_IS_READONLY_name);
zval property_name_default_value; zval property_name_default_value;
ZVAL_UNDEF(&property_name_default_value); ZVAL_UNDEF(&property_name_default_value);
zend_string *property_name_name = zend_string_init("name", sizeof("name") - 1, 1); zend_string *property_name_name = zend_string_init("name", sizeof("name") - 1, 1);
@ -1313,6 +1379,36 @@ static zend_class_entry *register_class_ReflectionProperty(zend_class_entry *cla
class_entry->ce_flags |= ZEND_ACC_NOT_SERIALIZABLE; class_entry->ce_flags |= ZEND_ACC_NOT_SERIALIZABLE;
zend_class_implements(class_entry, 1, class_entry_Reflector); zend_class_implements(class_entry, 1, class_entry_Reflector);
zval const_IS_STATIC_value;
ZVAL_LONG(&const_IS_STATIC_value, ZEND_ACC_STATIC);
zend_string *const_IS_STATIC_name = zend_string_init_interned("IS_STATIC", sizeof("IS_STATIC") - 1, 1);
zend_declare_class_constant_ex(class_entry, const_IS_STATIC_name, &const_IS_STATIC_value, ZEND_ACC_PUBLIC, NULL);
zend_string_release(const_IS_STATIC_name);
zval const_IS_READONLY_value;
ZVAL_LONG(&const_IS_READONLY_value, ZEND_ACC_READONLY);
zend_string *const_IS_READONLY_name = zend_string_init_interned("IS_READONLY", sizeof("IS_READONLY") - 1, 1);
zend_declare_class_constant_ex(class_entry, const_IS_READONLY_name, &const_IS_READONLY_value, ZEND_ACC_PUBLIC, NULL);
zend_string_release(const_IS_READONLY_name);
zval const_IS_PUBLIC_value;
ZVAL_LONG(&const_IS_PUBLIC_value, ZEND_ACC_PUBLIC);
zend_string *const_IS_PUBLIC_name = zend_string_init_interned("IS_PUBLIC", sizeof("IS_PUBLIC") - 1, 1);
zend_declare_class_constant_ex(class_entry, const_IS_PUBLIC_name, &const_IS_PUBLIC_value, ZEND_ACC_PUBLIC, NULL);
zend_string_release(const_IS_PUBLIC_name);
zval const_IS_PROTECTED_value;
ZVAL_LONG(&const_IS_PROTECTED_value, ZEND_ACC_PROTECTED);
zend_string *const_IS_PROTECTED_name = zend_string_init_interned("IS_PROTECTED", sizeof("IS_PROTECTED") - 1, 1);
zend_declare_class_constant_ex(class_entry, const_IS_PROTECTED_name, &const_IS_PROTECTED_value, ZEND_ACC_PUBLIC, NULL);
zend_string_release(const_IS_PROTECTED_name);
zval const_IS_PRIVATE_value;
ZVAL_LONG(&const_IS_PRIVATE_value, ZEND_ACC_PRIVATE);
zend_string *const_IS_PRIVATE_name = zend_string_init_interned("IS_PRIVATE", sizeof("IS_PRIVATE") - 1, 1);
zend_declare_class_constant_ex(class_entry, const_IS_PRIVATE_name, &const_IS_PRIVATE_value, ZEND_ACC_PUBLIC, NULL);
zend_string_release(const_IS_PRIVATE_name);
zval property_name_default_value; zval property_name_default_value;
ZVAL_UNDEF(&property_name_default_value); ZVAL_UNDEF(&property_name_default_value);
zend_string *property_name_name = zend_string_init("name", sizeof("name") - 1, 1); zend_string *property_name_name = zend_string_init("name", sizeof("name") - 1, 1);
@ -1337,6 +1433,30 @@ static zend_class_entry *register_class_ReflectionClassConstant(zend_class_entry
class_entry->ce_flags |= ZEND_ACC_NOT_SERIALIZABLE; class_entry->ce_flags |= ZEND_ACC_NOT_SERIALIZABLE;
zend_class_implements(class_entry, 1, class_entry_Reflector); zend_class_implements(class_entry, 1, class_entry_Reflector);
zval const_IS_PUBLIC_value;
ZVAL_LONG(&const_IS_PUBLIC_value, ZEND_ACC_PUBLIC);
zend_string *const_IS_PUBLIC_name = zend_string_init_interned("IS_PUBLIC", sizeof("IS_PUBLIC") - 1, 1);
zend_declare_class_constant_ex(class_entry, const_IS_PUBLIC_name, &const_IS_PUBLIC_value, ZEND_ACC_PUBLIC, NULL);
zend_string_release(const_IS_PUBLIC_name);
zval const_IS_PROTECTED_value;
ZVAL_LONG(&const_IS_PROTECTED_value, ZEND_ACC_PROTECTED);
zend_string *const_IS_PROTECTED_name = zend_string_init_interned("IS_PROTECTED", sizeof("IS_PROTECTED") - 1, 1);
zend_declare_class_constant_ex(class_entry, const_IS_PROTECTED_name, &const_IS_PROTECTED_value, ZEND_ACC_PUBLIC, NULL);
zend_string_release(const_IS_PROTECTED_name);
zval const_IS_PRIVATE_value;
ZVAL_LONG(&const_IS_PRIVATE_value, ZEND_ACC_PRIVATE);
zend_string *const_IS_PRIVATE_name = zend_string_init_interned("IS_PRIVATE", sizeof("IS_PRIVATE") - 1, 1);
zend_declare_class_constant_ex(class_entry, const_IS_PRIVATE_name, &const_IS_PRIVATE_value, ZEND_ACC_PUBLIC, NULL);
zend_string_release(const_IS_PRIVATE_name);
zval const_IS_FINAL_value;
ZVAL_LONG(&const_IS_FINAL_value, ZEND_ACC_FINAL);
zend_string *const_IS_FINAL_name = zend_string_init_interned("IS_FINAL", sizeof("IS_FINAL") - 1, 1);
zend_declare_class_constant_ex(class_entry, const_IS_FINAL_name, &const_IS_FINAL_value, ZEND_ACC_PUBLIC, NULL);
zend_string_release(const_IS_FINAL_name);
zval property_name_default_value; zval property_name_default_value;
ZVAL_UNDEF(&property_name_default_value); ZVAL_UNDEF(&property_name_default_value);
zend_string *property_name_name = zend_string_init("name", sizeof("name") - 1, 1); zend_string *property_name_name = zend_string_init("name", sizeof("name") - 1, 1);
@ -1468,6 +1588,12 @@ static zend_class_entry *register_class_ReflectionAttribute(zend_class_entry *cl
class_entry->ce_flags |= ZEND_ACC_NOT_SERIALIZABLE; class_entry->ce_flags |= ZEND_ACC_NOT_SERIALIZABLE;
zend_class_implements(class_entry, 1, class_entry_Reflector); zend_class_implements(class_entry, 1, class_entry_Reflector);
zval const_IS_INSTANCEOF_value;
ZVAL_LONG(&const_IS_INSTANCEOF_value, REFLECTION_ATTRIBUTE_IS_INSTANCEOF);
zend_string *const_IS_INSTANCEOF_name = zend_string_init_interned("IS_INSTANCEOF", sizeof("IS_INSTANCEOF") - 1, 1);
zend_declare_class_constant_ex(class_entry, const_IS_INSTANCEOF_name, &const_IS_INSTANCEOF_value, ZEND_ACC_PUBLIC, NULL);
zend_string_release(const_IS_INSTANCEOF_name);
return class_entry; return class_entry;
} }