interface_names[i].lc_name = zend_string_tolower(interface_names[i].name);
}
- ce->ce_flags |= ZEND_ACC_IMPLEMENT_INTERFACES;
ce->num_interfaces = list->children;
ce->interface_names = interface_names;
}
if (toplevel
/* We currently don't early-bind classes that implement interfaces or use traits */
- && !(ce->ce_flags & ZEND_ACC_IMPLEMENT_INTERFACES) && !ce->num_traits
+ && !ce->num_interfaces && !ce->num_traits
&& !(CG(compiler_options) & ZEND_COMPILE_PRELOAD)) {
if (extends_ast) {
zend_class_entry *parent_ce = zend_lookup_class_ex(
if (extends_ast && toplevel
&& (CG(compiler_options) & ZEND_COMPILE_DELAYED_BINDING)
/* We currently don't early-bind classes that implement interfaces or use traits */
- && !(ce->ce_flags & ZEND_ACC_IMPLEMENT_INTERFACES) && !ce->num_traits
+ && !ce->num_interfaces && !ce->num_traits
) {
CG(active_op_array)->fn_flags |= ZEND_ACC_EARLY_BINDING;
opline->opcode = ZEND_DECLARE_CLASS_DELAYED;
/* op_array or class is preloaded | | | */
#define ZEND_ACC_PRELOADED (1 << 10) /* X | X | | */
/* | | | */
-/* Class Flags (unused: 13, 15, 24...) | | | */
+/* Class Flags (unused: 13, 14, 15, 24...) | | | */
/* =========== | | | */
/* | | | */
/* Special class types | | | */
/* Class constants updated | | | */
#define ZEND_ACC_CONSTANTS_UPDATED (1 << 12) /* X | | | */
/* | | | */
-/* Class implements interface(s) | | | */
-#define ZEND_ACC_IMPLEMENT_INTERFACES (1 << 14) /* X | | | */
-/* | | | */
/* User class has methods with static variables | | | */
#define ZEND_HAS_STATIC_IN_METHODS (1 << 16) /* X | | | */
/* | | | */
/* Inherit interfaces */
if (parent_ce->num_interfaces) {
- if (!(ce->ce_flags & ZEND_ACC_IMPLEMENT_INTERFACES)) {
+ if (!ce->num_interfaces) {
zend_do_inherit_interfaces(ce, parent_ce);
} else {
uint32_t i;
if (ce->num_traits) {
zend_do_bind_traits(ce);
}
- if (ce->ce_flags & ZEND_ACC_IMPLEMENT_INTERFACES) {
+ if (interfaces) {
zend_do_implement_interfaces(ce, interfaces);
}
if ((ce->ce_flags & (ZEND_ACC_IMPLICIT_ABSTRACT_CLASS|ZEND_ACC_INTERFACE|ZEND_ACC_TRAIT|ZEND_ACC_EXPLICIT_ABSTRACT_CLASS)) == ZEND_ACC_IMPLICIT_ABSTRACT_CLASS) {