From: Etienne Kneuss Date: Sun, 24 Aug 2008 17:01:22 +0000 (+0000) Subject: - Export zend_user_(un)serialize functions to be used by custom callbacks X-Git-Tag: BEFORE_HEAD_NS_CHANGE~590 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=74afa13d16e7eed57227fc4e8655a1bddf82dfb6;p=php - Export zend_user_(un)serialize functions to be used by custom callbacks - Transfer custom (un)serialize callbacks through inheritance --- diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c index 5ac98b5b22..ba8b747ad3 100644 --- a/Zend/zend_compile.c +++ b/Zend/zend_compile.c @@ -2891,6 +2891,10 @@ ZEND_API void zend_do_inheritance(zend_class_entry *ce, zend_class_entry *parent /* Inherit interfaces */ zend_do_inherit_interfaces(ce, parent_ce TSRMLS_CC); + /* Copy serialize/unserialize callbacks */ + ce->serialize = parent_ce->serialize; + ce->unserialize = parent_ce->unserialize; + /* Inherit properties */ zend_hash_merge(&ce->default_properties, &parent_ce->default_properties, (void (*)(void *)) zval_add_ref, NULL, sizeof(zval *), 0); if (parent_ce->type != ce->type) { diff --git a/Zend/zend_interfaces.c b/Zend/zend_interfaces.c index d4805cd92c..52a7c3bdf6 100755 --- a/Zend/zend_interfaces.c +++ b/Zend/zend_interfaces.c @@ -412,7 +412,7 @@ static int zend_implement_arrayaccess(zend_class_entry *interface, zend_class_en /* }}}*/ /* {{{ zend_user_serialize */ -int zend_user_serialize(zval *object, int *type, zstr *buffer, zend_uint *buf_len, zend_serialize_data *data TSRMLS_DC) +ZEND_API int zend_user_serialize(zval *object, int *type, zstr *buffer, zend_uint *buf_len, zend_serialize_data *data TSRMLS_DC) { zend_class_entry * ce = Z_OBJCE_P(object); zval *retval; @@ -450,7 +450,7 @@ int zend_user_serialize(zval *object, int *type, zstr *buffer, zend_uint *buf_le /* }}} */ /* {{{ zend_user_unserialize */ -int zend_user_unserialize(zval **object, zend_class_entry *ce, int type, const zstr buf, zend_uint buf_len, zend_unserialize_data *data TSRMLS_DC) +ZEND_API int zend_user_unserialize(zval **object, zend_class_entry *ce, int type, const zstr buf, zend_uint buf_len, zend_unserialize_data *data TSRMLS_DC) { zval * zdata; diff --git a/Zend/zend_interfaces.h b/Zend/zend_interfaces.h index ff3edf3f57..dbf5f9db3f 100755 --- a/Zend/zend_interfaces.h +++ b/Zend/zend_interfaces.h @@ -66,6 +66,9 @@ ZEND_API zend_object_iterator *zend_user_it_get_new_iterator(zend_class_entry *c ZEND_API void zend_register_interfaces(TSRMLS_D); +ZEND_API int zend_user_serialize(zval *object, int *type, zstr *buffer, zend_uint *buf_len, zend_serialize_data *data TSRMLS_DC); +ZEND_API int zend_user_unserialize(zval **object, zend_class_entry *ce, int type, const zstr buf, zend_uint buf_len, zend_unserialize_data *data TSRMLS_DC); + END_EXTERN_C() #endif /* ZEND_INTERFACES_H */