Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:15504 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 26313 invoked by uid 1010); 20 Mar 2005 01:27:16 -0000 Delivered-To: ezmlm-scan-internals@lists.php.net Delivered-To: ezmlm-internals@lists.php.net Received: (qmail 26298 invoked by uid 1007); 20 Mar 2005 01:27:16 -0000 Message-ID: <20050320012716.26297.qmail@lists.php.net> To: internals@lists.php.net Reply-To: "l0t3k" Date: Sun, 20 Mar 2005 08:29:57 -0800 Lines: 64 X-Priority: 3 X-MSMail-Priority: Normal X-Newsreader: Microsoft Outlook Express 6.00.2900.2180 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2180 X-RFC2646: Format=Flowed; Original X-Posted-By: 66.156.2.119 Subject: Serialization question From: cshmoove@bellsouth.net ("l0t3k") a quick question about the new serialization callbacks. is it necessary only to serialize the state specific to the given object, or do we also have to explicitly serialize the properties hash ? Assuming my classes are set up as below, will the serialization mechanism take care of subclasses for me (calling __sleep etc). if not what more do i need to accomodate userland subclasses ? typedef struct php_locale_object { zend_object std; void *ptr; } php_locale_object; /* {{{ Locale serialization support **/ static int locale_serialize(zval *object, unsigned char **buffer, zend_uint *buf_len, zend_serialize_data *data TSRMLS_DC) { Locale *loc = I18N_FETCH_OBJ(object, Locale *); char *name, *result; int len; name = (char *)loc->getName(); len = strlen(name); result = (len > 0) ? estrndup(name, len) : NULL; *buffer = (unsigned char*)result; *buf_len = (zend_uint)len; return SUCCESS; } static int locale_unserialize(zval **object, zend_class_entry *ce, const unsigned char *buf, zend_uint buf_len, zend_unserialize_data *data TSRMLS_DC) { Locale *loc; if (buf_len) { Locale temp = Locale::createFromName((char *)buf); loc = new Locale(temp); } else { loc = new Locale(); } *object = php_locale_new(loc TSRMLS_CC); return SUCCESS; } /* }}} */ l0t3k