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

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

index 45946393b746039c6568f7c3daa8daf8c4a2f8f0..f11eb926c344c79e4eacb68a3a1908a083d6a3d0 100644 (file)
@@ -347,6 +347,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..cf1fd7f
--- /dev/null
@@ -0,0 +1,66 @@
+--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 [ native string STRING_CONSTANT ] { }
+    Constant [ integer INTEGER_CONSTANT ] { }
+    Constant [ double FLOAT_CONSTANT ] { }
+  }
+
+  - Static properties [0] {
+  }
+
+  - Static methods [0] {
+  }
+
+  - Properties [0] {
+  }
+
+  - Methods [0] {
+  }
+}
+--UEXPECTF--
+Class [ <user> class just_constants ] {
+  @@ %s
+
+  - Constants [5] {
+    Constant [ boolean BOOLEAN_CONSTANT ] { }
+    Constant [ null NULL_CONSTANT ] { }
+    Constant [ Unicode string STRING_CONSTANT ] { }
+    Constant [ integer INTEGER_CONSTANT ] { }
+    Constant [ double FLOAT_CONSTANT ] { }
+  }
+
+  - Static properties [0] {
+  }
+
+  - Static methods [0] {
+  }
+
+  - Properties [0] {
+  }
+
+  - Methods [0] {
+  }
+}
+