]> granicus.if.org Git - php/commitdiff
- MFH: Fix #29986 (Class constants won't work with predefined constants when
authorJohannes Schlüter <johannes@php.net>
Fri, 24 Feb 2006 23:09:22 +0000 (23:09 +0000)
committerJohannes Schlüter <johannes@php.net>
Fri, 24 Feb 2006 23:09:22 +0000 (23:09 +0000)
  using ReflectionClass)

ext/reflection/php_reflection.c
ext/reflection/tests/bug29986.phpt [new file with mode: 0644]

index 1815ab38aa38354cdf3677aaf3bd0d600e1ae7d7..fc0d1e710c28ea6b761d7352e634fc64d805dbcb 100644 (file)
@@ -352,6 +352,7 @@ static void _class_string(string *str, zend_class_entry *ce, zval *obj, char *in
 
        /* Constants */
        if (&ce->constants_table) {
+               zend_hash_apply_with_argument(&ce->constants_table, (apply_func_arg_t) zval_update_constant, (void*)1 TSRMLS_CC);
                string_printf(str, "\n");
                count = zend_hash_num_elements(&ce->constants_table);
                string_printf(str, "%s  - Constants [%d] {\n", indent, count);
diff --git a/ext/reflection/tests/bug29986.phpt b/ext/reflection/tests/bug29986.phpt
new file mode 100644 (file)
index 0000000..9fd0c23
--- /dev/null
@@ -0,0 +1,41 @@
+--TEST--
+Reflection::export
+--SKIPIF--
+<?php extension_loaded('reflection') or die('skip'); ?>
+--FILE--
+<?php
+class just_constants
+{
+    const BOOLEAN_CONSTANT = true;
+    const NULL_CONSTANT = null;
+    const STRING_CONSTANT = 'This is a string';
+    const INTEGER_CONSTANT = 1000;
+    const FLOAT_CONSTANT = 3.14159265;
+}
+
+Reflection::export(new ReflectionClass('just_constants'));
+?>
+--EXPECTF--
+Class [ <user> class just_constants ] {
+  @@ %s
+
+  - Constants [5] {
+    Constant [ boolean BOOLEAN_CONSTANT ] { }
+    Constant [ null NULL_CONSTANT ] { }
+    Constant [ string STRING_CONSTANT ] { }
+    Constant [ integer INTEGER_CONSTANT ] { }
+    Constant [ double FLOAT_CONSTANT ] { }
+  }
+
+  - Static properties [0] {
+  }
+
+  - Static methods [0] {
+  }
+
+  - Properties [0] {
+  }
+
+  - Methods [0] {
+  }
+}