(noticed by Jani)
add tests
--- /dev/null
+--TEST--
+class constants basic tests
+--FILE--
+<?php
+
+class test {
+ const val = "string";
+ const val2 = 1;
+}
+
+var_dump(test::val);
+var_dump(test::val2);
+
+var_dump(test::val3);
+
+echo "Done\n";
+?>
+--EXPECTF--
+string(6) "string"
+int(1)
+
+Fatal error: Undefined class constant 'val3' in %s on line %d
--- /dev/null
+--TEST--
+class constants as default function arguments
+--FILE--
+<?php
+
+class test {
+ const val = 1;
+}
+
+function foo($v = test::val) {
+ var_dump($v);
+}
+
+function bar($b = NoSuchClass::val) {
+ var_dump($b);
+}
+
+foo();
+foo(5);
+
+bar(10);
+bar();
+
+echo "Done\n";
+?>
+--EXPECTF--
+int(1)
+int(5)
+int(10)
+
+Fatal error: Class 'NoSuchClass' not found in %s on line %d
--- /dev/null
+--TEST--
+class constants as default function arguments and dynamically loaded classes
+--FILE--
+<?php
+
+$class_data = <<<DATA
+<?php
+class test {
+ const val = 1;
+}
+?>
+DATA;
+
+$filename = dirname(__FILE__)."/cc003.dat";
+file_put_contents($filename, $class_data);
+
+function foo($v = test::val) {
+ var_dump($v);
+}
+
+include $filename;
+
+foo();
+foo(5);
+
+unlink($filename);
+
+echo "Done\n";
+?>
+--EXPECTF--
+int(1)
+int(5)
+Done
retval = 0;
}
}
- efree(class_name);
if (retval && ce) {
if (zend_hash_find(&((*ce)->constants_table), constant_name, const_name_len+1, (void **) &ret_constant) != SUCCESS) {
retval = 0;
}
} else {
+ zend_error(E_ERROR, "Class '%s' not found", class_name);
retval = 0;
}
+ efree(class_name);
if (retval) {
zval_update_constant(ret_constant, (void*)1 TSRMLS_CC);