mirror of
https://github.com/php/php-src.git
synced 2026-03-31 20:53:00 +02:00
Squashed commit of the following: commit8b45fa2acbAuthor: Dmitry Stogov <dmitry@zend.com> Date: Thu Jun 16 01:52:50 2016 +0300 Separate slow path of ZEND_RECV into a cold function. commit9e18895ee5Author: Dmitry Stogov <dmitry@zend.com> Date: Wed Jun 15 23:26:28 2016 +0300 Required argument can't be IS_UNDEF anymore. commit662db66e39Author: Dmitry Stogov <dmitry@zend.com> Date: Tue May 31 17:14:50 2016 +0300 Replace "Missing argument" warning by "Too few arguments" exception.
157 lines
2.4 KiB
PHP
157 lines
2.4 KiB
PHP
--TEST--
|
|
ReflectionClass::newInstance[Args]
|
|
--FILE--
|
|
<?php
|
|
|
|
function test($class)
|
|
{
|
|
echo "====>$class\n";
|
|
try
|
|
{
|
|
$ref = new ReflectionClass($class);
|
|
}
|
|
catch (ReflectionException $e)
|
|
{
|
|
var_dump($e->getMessage());
|
|
return; // only here
|
|
}
|
|
|
|
echo "====>newInstance()\n";
|
|
try
|
|
{
|
|
var_dump($ref->newInstance());
|
|
}
|
|
catch (ReflectionException $e)
|
|
{
|
|
var_dump($e->getMessage());
|
|
}
|
|
catch (Throwable $e)
|
|
{
|
|
echo "Exception: " . $e->getMessage() . "\n";
|
|
}
|
|
|
|
echo "====>newInstance(25)\n";
|
|
try
|
|
{
|
|
var_dump($ref->newInstance(25));
|
|
}
|
|
catch (ReflectionException $e)
|
|
{
|
|
var_dump($e->getMessage());
|
|
}
|
|
|
|
echo "====>newInstance(25, 42)\n";
|
|
try
|
|
{
|
|
var_dump($ref->newInstance(25, 42));
|
|
}
|
|
catch (ReflectionException $e)
|
|
{
|
|
var_dump($e->getMessage());
|
|
}
|
|
|
|
echo "\n";
|
|
}
|
|
|
|
function __autoload($class)
|
|
{
|
|
echo __FUNCTION__ . "($class)\n";
|
|
}
|
|
|
|
test('Class_does_not_exist');
|
|
|
|
Class NoCtor
|
|
{
|
|
}
|
|
|
|
test('NoCtor');
|
|
|
|
Class WithCtor
|
|
{
|
|
function __construct()
|
|
{
|
|
echo __METHOD__ . "()\n";
|
|
var_dump(func_get_args());
|
|
}
|
|
}
|
|
|
|
test('WithCtor');
|
|
|
|
Class WithCtorWithArgs
|
|
{
|
|
function __construct($arg)
|
|
{
|
|
echo __METHOD__ . "($arg)\n";
|
|
var_dump(func_get_args());
|
|
}
|
|
}
|
|
|
|
test('WithCtorWithArgs');
|
|
|
|
?>
|
|
===DONE===
|
|
<?php exit(0); ?>
|
|
--EXPECTF--
|
|
|
|
====>Class_does_not_exist
|
|
__autoload(Class_does_not_exist)
|
|
string(41) "Class Class_does_not_exist does not exist"
|
|
====>NoCtor
|
|
====>newInstance()
|
|
object(NoCtor)#%d (0) {
|
|
}
|
|
====>newInstance(25)
|
|
string(86) "Class NoCtor does not have a constructor, so you cannot pass any constructor arguments"
|
|
====>newInstance(25, 42)
|
|
string(86) "Class NoCtor does not have a constructor, so you cannot pass any constructor arguments"
|
|
|
|
====>WithCtor
|
|
====>newInstance()
|
|
WithCtor::__construct()
|
|
array(0) {
|
|
}
|
|
object(WithCtor)#%d (0) {
|
|
}
|
|
====>newInstance(25)
|
|
WithCtor::__construct()
|
|
array(1) {
|
|
[0]=>
|
|
int(25)
|
|
}
|
|
object(WithCtor)#%d (0) {
|
|
}
|
|
====>newInstance(25, 42)
|
|
WithCtor::__construct()
|
|
array(2) {
|
|
[0]=>
|
|
int(25)
|
|
[1]=>
|
|
int(42)
|
|
}
|
|
object(WithCtor)#%d (0) {
|
|
}
|
|
|
|
====>WithCtorWithArgs
|
|
====>newInstance()
|
|
Exception: Too few arguments to function WithCtorWithArgs::__construct(), 0 passed and exactly 1 expected
|
|
====>newInstance(25)
|
|
WithCtorWithArgs::__construct(25)
|
|
array(1) {
|
|
[0]=>
|
|
int(25)
|
|
}
|
|
object(WithCtorWithArgs)#%d (0) {
|
|
}
|
|
====>newInstance(25, 42)
|
|
WithCtorWithArgs::__construct(25)
|
|
array(2) {
|
|
[0]=>
|
|
int(25)
|
|
[1]=>
|
|
int(42)
|
|
}
|
|
object(WithCtorWithArgs)#%d (0) {
|
|
}
|
|
|
|
===DONE===
|