123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150 |
- --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";
- }
- spl_autoload_register(function ($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');
- ?>
- --EXPECTF--
- ====>Class_does_not_exist
- {closure}(Class_does_not_exist)
- string(43) "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) {
- }
|