|
|
|
@ -709,6 +709,16 @@ ZEND_API void zend_merge_properties(zval *obj, HashTable *properties, int destro |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
ZEND_API void zend_update_class_constants(zend_class_entry *class_type TSRMLS_DC) |
|
|
|
{ |
|
|
|
if (!class_type->constants_updated) { |
|
|
|
zend_hash_apply_with_argument(&class_type->default_properties, (apply_func_arg_t) zval_update_constant, (void *) 1 TSRMLS_CC); |
|
|
|
zend_hash_apply_with_argument(class_type->static_members, (apply_func_arg_t) zval_update_constant, (void *) 1 TSRMLS_CC); |
|
|
|
class_type->constants_updated = 1; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/* This function requires 'properties' to contain all props declared in the |
|
|
|
* class and all props being public. If only a subset is given or the class |
|
|
|
* has protected members then you need to merge the properties seperately by |
|
|
|
@ -723,11 +733,7 @@ ZEND_API int _object_and_properties_init(zval *arg, zend_class_entry *class_type |
|
|
|
zend_error(E_ERROR, "Cannot instantiate %s %s", what, class_type->name); |
|
|
|
} |
|
|
|
|
|
|
|
if (!class_type->constants_updated) { |
|
|
|
zend_hash_apply_with_argument(&class_type->default_properties, (apply_func_arg_t) zval_update_constant, (void *) 1 TSRMLS_CC); |
|
|
|
zend_hash_apply_with_argument(class_type->static_members, (apply_func_arg_t) zval_update_constant, (void *) 1 TSRMLS_CC); |
|
|
|
class_type->constants_updated = 1; |
|
|
|
} |
|
|
|
zend_update_class_constants(class_type TSRMLS_CC); |
|
|
|
|
|
|
|
arg->type = IS_OBJECT; |
|
|
|
if (class_type->create_object == NULL) { |
|
|
|
|