ulong num_index;
if (zend_hash_get_current_key_ex(CE_STATIC_MEMBERS(ce), &key, &key_len, &num_index, 0, &pos) != FAILURE && key) {
- zval_add_ref(value);
+ char *prop_name, *class_name;
- if (*key == '\0') {
- *key++;
- key_len--;
-
- }
- if (*key == '*' && *(key+1) == '\0') {
- *(key+1) = *key++;
- key_len--;
- }
+ zend_unmangle_property_name(key, key_len-1, &class_name, &prop_name);
+
+ zval_add_ref(value);
- zend_hash_update(Z_ARRVAL_P(return_value), key, key_len, value, sizeof(zval *), NULL);
+ zend_hash_update(Z_ARRVAL_P(return_value), prop_name, strlen(prop_name)+1, value, sizeof(zval *), NULL);
}
zend_hash_move_forward_ex(CE_STATIC_MEMBERS(ce), &pos);
}
$class = new ReflectionClass('foo');
$properties = $class->getStaticProperties();
var_dump($properties, array_keys($properties));
-var_dump(isset($properties['*bar'])); // false
-var_dump(isset($properties["\0*\0bar"])); // true
-
+var_dump(isset($properties['*bar']));
+var_dump(isset($properties["\0*\0bar"]));
+var_dump(isset($properties["bar"]));
?>
--EXPECT--
array(2) {
- ["*bar"]=>
+ ["bar"]=>
string(3) "baz"
["a"]=>
string(1) "a"
}
array(2) {
[0]=>
- string(4) "*bar"
+ string(3) "bar"
[1]=>
string(1) "a"
}
-bool(true)
bool(false)
+bool(false)
+bool(true)