]> granicus.if.org Git - php/commitdiff
- Export zend_user_(un)serialize functions to be used by custom callbacks
authorEtienne Kneuss <colder@php.net>
Sun, 24 Aug 2008 17:01:22 +0000 (17:01 +0000)
committerEtienne Kneuss <colder@php.net>
Sun, 24 Aug 2008 17:01:22 +0000 (17:01 +0000)
- Transfer custom (un)serialize callbacks through inheritance

Zend/zend_compile.c
Zend/zend_interfaces.c
Zend/zend_interfaces.h

index 5ac98b5b22a0b767c4fd6b4e681d87d0c8031eac..ba8b747ad37331659af53a6c938c47f5e94e2cf6 100644 (file)
@@ -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) {
index d4805cd92cd99375cd59ea16428c05809aed043d..52a7c3bdf6f64fd3f8d888d977d8b01de1af72e3 100755 (executable)
@@ -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;
 
index ff3edf3f576ebb7286f0d655aca50d2c9f903a73..dbf5f9db3fa58bdfd3f03525bb4cc95805ddecd3 100755 (executable)
@@ -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 */