void *ptr;
unsigned int free_ptr:1;
zval *obj;
+ zend_class_entry *ce;
} reflection_object;
static zend_object_handlers reflection_object_handlers;
intern = (reflection_object *) zend_object_store_get_object(object TSRMLS_CC);
intern->ptr = ce;
intern->free_ptr = 0;
+ intern->ce = ce;
zend_hash_update(Z_OBJPROP_P(object), "name", sizeof("name"), (void **) &name, sizeof(zval *), NULL);
}
/* }}} */
ZVAL_STRINGL(name, module->name, name_len, 1);
intern->ptr = module;
intern->free_ptr = 0;
+ intern->ce = NULL;
zend_hash_update(Z_OBJPROP_P(object), "name", sizeof("name"), (void **) &name, sizeof(zval *), NULL);
}
/* }}} */
reference->fptr = fptr;
intern->ptr = reference;
intern->free_ptr = 1;
+ intern->ce = fptr->common.scope;
zend_hash_update(Z_OBJPROP_P(object), "name", sizeof("name"), (void **) &name, sizeof(zval *), NULL);
}
/* }}} */
intern = (reflection_object *) zend_object_store_get_object(object TSRMLS_CC);
intern->ptr = function;
intern->free_ptr = 0;
+ intern->ce = NULL;
zend_hash_update(Z_OBJPROP_P(object), "name", sizeof("name"), (void **) &name, sizeof(zval *), NULL);
}
/* }}} */
intern = (reflection_object *) zend_object_store_get_object(object TSRMLS_CC);
intern->ptr = method;
intern->free_ptr = 0;
+ intern->ce = ce;
zend_hash_update(Z_OBJPROP_P(object), "name", sizeof("name"), (void **) &name, sizeof(zval *), NULL);
zend_hash_update(Z_OBJPROP_P(object), "class", sizeof("class"), (void **) &classname, sizeof(zval *), NULL);
}
reference->prop = prop;
intern->ptr = reference;
intern->free_ptr = 1;
+ intern->ce = ce;
zend_hash_update(Z_OBJPROP_P(object), "name", sizeof("name"), (void **) &name, sizeof(zval *), NULL);
zend_hash_update(Z_OBJPROP_P(object), "class", sizeof("class"), (void **) &classname, sizeof(zval *), NULL);
}
zend_hash_update(Z_OBJPROP_P(object), "name", sizeof("name"), (void **) &name, sizeof(zval *), NULL);
intern->ptr = fptr;
intern->free_ptr = 0;
+ intern->ce = NULL;
}
/* }}} */
zend_function *fptr;
struct _zend_arg_info *arg_info;
int position;
+ zend_class_entry *ce = NULL;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "zz", &reference, ¶meter) == FAILURE) {
return;
case IS_ARRAY: {
zval **classref;
zval **method;
- zend_class_entry *ce;
zend_class_entry **pce;
char *lcname;
ref->fptr = fptr;
intern->ptr = ref;
intern->free_ptr = 1;
+ intern->ce = ce;
}
/* }}} */
zend_hash_update(Z_OBJPROP_P(object), "name", sizeof("name"), (void **) &name, sizeof(zval *), NULL);
intern->ptr = mptr;
intern->free_ptr = 0;
+ intern->ce = ce;
}
/* }}} */
METHOD_NOTSTATIC_NUMPARAMS(0);
GET_REFLECTION_OBJECT_PTR(mptr);
- RETURN_BOOL(mptr->common.scope->constructor == mptr);
+ /* we need to check if the ctor is the ctor of the class level we we
+ * looking at since we might be looking at an inherited old style ctor
+ * defined in base class. */
+ RETURN_BOOL(mptr->common.fn_flags & ZEND_ACC_CTOR && intern->ce->constructor && intern->ce->constructor->common.scope == mptr->common.scope);
}
/* }}} */
METHOD_NOTSTATIC_NUMPARAMS(0);
GET_REFLECTION_OBJECT_PTR(mptr);
- RETURN_BOOL(mptr->common.scope->destructor == mptr);
+ RETURN_BOOL(mptr->common.fn_flags && ZEND_ACC_DTOR);
}
/* }}} */
reference->prop = property_info;
intern->ptr = reference;
intern->free_ptr = 1;
+ intern->ce = ce;
}
/* }}} */
zend_hash_update(Z_OBJPROP_P(object), "name", sizeof("name"), (void **) &name, sizeof(zval *), NULL);
intern->ptr = module;
intern->free_ptr = 0;
+ intern->ce = NULL;
}
/* }}} */
void *ptr;
unsigned int free_ptr:1;
zval *obj;
+ zend_class_entry *ce;
} reflection_object;
static zend_object_handlers reflection_object_handlers;
intern = (reflection_object *) zend_object_store_get_object(object TSRMLS_CC);
intern->ptr = ce;
intern->free_ptr = 0;
+ intern->ce = ce;
zend_hash_update(Z_OBJPROP_P(object), "name", sizeof("name"), (void **) &name, sizeof(zval *), NULL);
}
/* }}} */
ZVAL_STRINGL(name, module->name, name_len, 1);
intern->ptr = module;
intern->free_ptr = 0;
+ intern->ce = NULL;
zend_hash_update(Z_OBJPROP_P(object), "name", sizeof("name"), (void **) &name, sizeof(zval *), NULL);
}
/* }}} */
reference->fptr = fptr;
intern->ptr = reference;
intern->free_ptr = 1;
+ intern->ce = fptr->common.scope;
zend_hash_update(Z_OBJPROP_P(object), "name", sizeof("name"), (void **) &name, sizeof(zval *), NULL);
}
/* }}} */
intern = (reflection_object *) zend_object_store_get_object(object TSRMLS_CC);
intern->ptr = function;
intern->free_ptr = 0;
+ intern->ce = NULL;
zend_hash_update(Z_OBJPROP_P(object), "name", sizeof("name"), (void **) &name, sizeof(zval *), NULL);
}
/* }}} */
intern = (reflection_object *) zend_object_store_get_object(object TSRMLS_CC);
intern->ptr = method;
intern->free_ptr = 0;
+ intern->ce = ce;
zend_hash_update(Z_OBJPROP_P(object), "name", sizeof("name"), (void **) &name, sizeof(zval *), NULL);
zend_hash_update(Z_OBJPROP_P(object), "class", sizeof("class"), (void **) &classname, sizeof(zval *), NULL);
}
reference->prop = prop;
intern->ptr = reference;
intern->free_ptr = 1;
+ intern->ce = ce;
zend_hash_update(Z_OBJPROP_P(object), "name", sizeof("name"), (void **) &name, sizeof(zval *), NULL);
zend_hash_update(Z_OBJPROP_P(object), "class", sizeof("class"), (void **) &classname, sizeof(zval *), NULL);
}
zend_hash_update(Z_OBJPROP_P(object), "name", sizeof("name"), (void **) &name, sizeof(zval *), NULL);
intern->ptr = fptr;
intern->free_ptr = 0;
+ intern->ce = NULL;
}
/* }}} */
zend_function *fptr;
struct _zend_arg_info *arg_info;
int position;
+ zend_class_entry *ce = NULL;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "zz", &reference, ¶meter) == FAILURE) {
return;
case IS_ARRAY: {
zval **classref;
zval **method;
- zend_class_entry *ce;
zend_class_entry **pce;
char *lcname;
ref->fptr = fptr;
intern->ptr = ref;
intern->free_ptr = 1;
+ intern->ce = ce;
}
/* }}} */
zend_hash_update(Z_OBJPROP_P(object), "name", sizeof("name"), (void **) &name, sizeof(zval *), NULL);
intern->ptr = mptr;
intern->free_ptr = 0;
+ intern->ce = ce;
}
/* }}} */
METHOD_NOTSTATIC_NUMPARAMS(0);
GET_REFLECTION_OBJECT_PTR(mptr);
- RETURN_BOOL(mptr->common.scope->constructor == mptr);
+ /* we need to check if the ctor is the ctor of the class level we we
+ * looking at since we might be looking at an inherited old style ctor
+ * defined in base class. */
+ RETURN_BOOL(mptr->common.fn_flags & ZEND_ACC_CTOR && intern->ce->constructor && intern->ce->constructor->common.scope == mptr->common.scope);
}
/* }}} */
METHOD_NOTSTATIC_NUMPARAMS(0);
GET_REFLECTION_OBJECT_PTR(mptr);
- RETURN_BOOL(mptr->common.scope->destructor == mptr);
+ RETURN_BOOL(mptr->common.fn_flags && ZEND_ACC_DTOR);
}
/* }}} */
reference->prop = property_info;
intern->ptr = reference;
intern->free_ptr = 1;
+ intern->ce = ce;
}
/* }}} */
zend_hash_update(Z_OBJPROP_P(object), "name", sizeof("name"), (void **) &name, sizeof(zval *), NULL);
intern->ptr = module;
intern->free_ptr = 0;
+ intern->ce = NULL;
}
/* }}} */