static void print_hash(zend_write_func_t write_func, HashTable *ht, int indent, zend_bool is_object TSRMLS_DC) /* {{{ */ { zval **tmp; char *string_key; HashPosition iterator; ulong num_key; uint str_len; int i; for (i = 0; i < indent; i++) { ZEND_PUTS_EX(" "); } ZEND_PUTS_EX("(\n"); indent += PRINT_ZVAL_INDENT; zend_hash_internal_pointer_reset_ex(ht, &iterator); while (zend_hash_get_current_data_ex(ht, (void **) &tmp, &iterator) == SUCCESS) { for (i = 0; i < indent; i++) { ZEND_PUTS_EX(" "); } ZEND_PUTS_EX("["); switch (zend_hash_get_current_key_ex(ht, &string_key, &str_len, &num_key, 0, &iterator)) { case HASH_KEY_IS_STRING: if (is_object) { const char *prop_name, *class_name; int prop_len; int mangled = zend_unmangle_property_name_ex(string_key, str_len - 1, &class_name, &prop_name, &prop_len); ZEND_WRITE_EX(prop_name, prop_len); if (class_name && mangled == SUCCESS) { if (class_name[0]=='*') { ZEND_PUTS_EX(":protected"); } else { ZEND_PUTS_EX(":"); ZEND_PUTS_EX(class_name); ZEND_PUTS_EX(":private"); } } } else { ZEND_WRITE_EX(string_key, str_len-1); } break; case HASH_KEY_IS_LONG: { char key[25]; snprintf(key, sizeof(key), "%ld", num_key); ZEND_PUTS_EX(key); } break; } ZEND_PUTS_EX("] => "); zend_print_zval_r_ex(write_func, *tmp, indent+PRINT_ZVAL_INDENT TSRMLS_CC); ZEND_PUTS_EX("\n"); zend_hash_move_forward_ex(ht, &iterator); } indent -= PRINT_ZVAL_INDENT; for (i = 0; i < indent; i++) { ZEND_PUTS_EX(" "); } ZEND_PUTS_EX(")\n"); }
static void print_hash(zend_write_func_t write_func, HashTable *ht, int indent, zend_bool is_object) /* {{{ */ { zval *tmp; zend_string *string_key; zend_ulong num_key; int i; for (i = 0; i < indent; i++) { ZEND_PUTS_EX(" "); } ZEND_PUTS_EX("(\n"); indent += PRINT_ZVAL_INDENT; ZEND_HASH_FOREACH_KEY_VAL(ht, num_key, string_key, tmp) { if (Z_TYPE_P(tmp) == IS_INDIRECT) { tmp = Z_INDIRECT_P(tmp); if (Z_TYPE_P(tmp) == IS_UNDEF) { continue; } } for (i = 0; i < indent; i++) { ZEND_PUTS_EX(" "); } ZEND_PUTS_EX("["); if (string_key) { if (is_object) { const char *prop_name, *class_name; size_t prop_len; int mangled = zend_unmangle_property_name_ex(string_key, &class_name, &prop_name, &prop_len); ZEND_WRITE_EX(prop_name, prop_len); if (class_name && mangled == SUCCESS) { if (class_name[0]=='*') { ZEND_PUTS_EX(":protected"); } else { ZEND_PUTS_EX(":"); ZEND_PUTS_EX(class_name); ZEND_PUTS_EX(":private"); } } } else { ZEND_WRITE_EX(ZSTR_VAL(string_key), ZSTR_LEN(string_key)); } } else { char key[25]; snprintf(key, sizeof(key), ZEND_LONG_FMT, num_key); ZEND_PUTS_EX(key); } ZEND_PUTS_EX("] => "); zend_print_zval_r_ex(write_func, tmp, indent+PRINT_ZVAL_INDENT); ZEND_PUTS_EX("\n"); } ZEND_HASH_FOREACH_END(); indent -= PRINT_ZVAL_INDENT; for (i = 0; i < indent; i++) { ZEND_PUTS_EX(" "); } ZEND_PUTS_EX(")\n"); }