- Fix #52854 (ReflectionClass::newInstanceArgs does not work for classes without constructors

This commit is contained in:
Johannes Schlüter 2010-11-21 12:24:09 +00:00
parent 224bfb38f7
commit 5a1e9d1d6b
2 changed files with 29 additions and 1 deletions

View File

@ -4296,7 +4296,7 @@ ZEND_METHOD(reflection_class, newInstanceArgs)
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);

View File

@ -0,0 +1,28 @@
--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