<?php
class Foo
{
private $a;
public function __construct(int $a)
{
$this->a = $a;
}
public function __invoke(int $a) : Bar
{
return new Bar($a);
}
}
class Bar {
private $a;
public function __construct(int $a)
{
$this->a = $a;
}
}
$foo = new Foo(1);
$bar = new $foo(2);
$bar2 = new ($foo(2));
var_dump($foo);
var_dump($bar);
var_dump($bar2);
Fatal error: Uncaught ArgumentCountError: Too few arguments to function Bar::__construct(), 0 passed in /in/Wh8nD on line 35 and exactly 1 expected in /in/Wh8nD:25
Stack trace:
#0 /in/Wh8nD(35): Bar->__construct()
#1 {main}
thrown in /in/Wh8nD on line 25
Process exited with code 255.
Output for 8.3.5
Warning: PHP Startup: Unable to load dynamic library 'sodium.so' (tried: /usr/lib/php/8.3.5/modules/sodium.so (libsodium.so.23: cannot open shared object file: No such file or directory), /usr/lib/php/8.3.5/modules/sodium.so.so (/usr/lib/php/8.3.5/modules/sodium.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
Fatal error: Uncaught ArgumentCountError: Too few arguments to function Bar::__construct(), 0 passed in /in/Wh8nD on line 35 and exactly 1 expected in /in/Wh8nD:25
Stack trace:
#0 /in/Wh8nD(35): Bar->__construct()
#1 {main}
thrown in /in/Wh8nD on line 25
Process exited with code 255.
Output for 7.1.0 - 7.1.23, 7.2.0 - 7.2.11
Parse error: syntax error, unexpected '(' in /in/Wh8nD on line 35
Process exited with code 255.
Output for 5.6.38
Parse error: syntax error, unexpected ':', expecting ';' or '{' in /in/Wh8nD on line 13
Process exited with code 255.