if (params) {
efree(params);
}
- } else if (!ZEND_NUM_ARGS()) {
+ } else if (!ZEND_NUM_ARGS() || !argc) {
object_init_ex(return_value, ce);
} else {
zend_throw_exception_ex(reflection_exception_ptr, 0 TSRMLS_CC, "Class %s does not have a constructor, so you cannot pass any constructor arguments", ce->name);
--- /dev/null
+--TEST--
+Bug #52854: ReflectionClass::newInstanceArgs does not work for classes without constructors
+--FILE--
+<?php
+class Test {
+}
+$c = new ReflectionClass('Test');
+var_dump(new Test);
+var_dump(new Test());
+var_dump($c->newInstance());
+var_dump($c->newInstanceArgs(array()));
+
+try {
+ var_dump($c->newInstanceArgs(array(1)));
+} catch(ReflectionException $e) {
+ echo $e->getMessage()."\n";
+}
+?>
+--EXPECTF--
+object(Test)#2 (0) {
+}
+object(Test)#2 (0) {
+}
+object(Test)#2 (0) {
+}
+object(Test)#2 (0) {
+}
+Class Test does not have a constructor, so you cannot pass any constructor arguments