dmitry Mon Apr 11 05:27:49 2005 EDT
Modified files:
/php-src/ext/wddx wddx.c
Log:
Support for encoding/decoding of private and protected members
http://cvs.php.net/diff.php/php-src/ext/wddx/wddx.c?r1=1.114&r2=1.115&ty=u
Index: php-src/ext/wddx/wddx.c
diff -u php-src/ext/wddx/wddx.c:1.114 php-src/ext/wddx/wddx.c:1.115
--- php-src/ext/wddx/wddx.c:1.114 Fri Mar 11 20:46:47 2005
+++ php-src/ext/wddx/wddx.c Mon Apr 11 05:27:47 2005
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: wddx.c,v 1.114 2005/03/12 01:46:47 helly Exp $ */
+/* $Id: wddx.c,v 1.115 2005/04/11 09:27:47 dmitry Exp $ */
#include "php.h"
@@ -522,7 +522,10 @@
continue;
if (zend_hash_get_current_key_ex(HASH_OF(obj), &key,
&key_len, &idx, 0, NULL) == HASH_KEY_IS_STRING) {
- php_wddx_serialize_var(packet, *ent, key,
key_len TSRMLS_CC);
+ char *class_name, *prop_name;
+
+ zend_unmangle_property_name(key, &class_name,
&prop_name);
+ php_wddx_serialize_var(packet, *ent, prop_name,
strlen(prop_name)+1 TSRMLS_CC);
} else {
key_len = sprintf(tmp_buf, "%ld", idx);
php_wddx_serialize_var(packet, *ent, tmp_buf,
key_len TSRMLS_CC);
@@ -972,6 +975,13 @@
/* Clean up class name var
entry */
zval_ptr_dtor(&ent1->data);
+ } else if (Z_TYPE_P(ent2->data) ==
IS_OBJECT) {
+ zend_class_entry *old_scope =
EG(scope);
+
+ EG(scope) =
Z_OBJCE_P(ent2->data);
+ ent1->data->refcount--;
+ add_property_zval(ent2->data,
ent1->varname, ent1->data);
+ EG(scope) = old_scope;
} else
zend_hash_update(target_hash,
ent1->varname, strlen(ent1->varname)+1,
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php