<?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->__invoke(2);
var_dump($foo);
var_dump($bar);
var_dump($bar2);
Warning: Undefined property: Foo::$__invoke in /in/eWARQ on line 35
Fatal error: Uncaught Error: Class name must be a valid object or a string in /in/eWARQ:35
Stack trace:
#0 {main}
thrown in /in/eWARQ on line 35
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
Warning: Undefined property: Foo::$__invoke in /in/eWARQ on line 35
Fatal error: Uncaught Error: Class name must be a valid object or a string in /in/eWARQ:35
Stack trace:
#0 {main}
thrown in /in/eWARQ on line 35
Process exited with code 255.
Notice: Undefined property: Foo::$__invoke in /in/eWARQ on line 35
Fatal error: Uncaught Error: Class name must be a valid object or a string in /in/eWARQ:35
Stack trace:
#0 {main}
thrown in /in/eWARQ on line 35
Process exited with code 255.
Output for 7.3.32 - 7.3.33
Fatal error: Uncaught Error: Class name must be a valid object or a string in /in/eWARQ:35
Stack trace:
#0 {main}
thrown in /in/eWARQ on line 35
Process exited with code 255.
Output for 5.6.38
Parse error: syntax error, unexpected ':', expecting ';' or '{' in /in/eWARQ on line 13
Process exited with code 255.