<?php
class A{
public function __construct($b)
{
if($b)
return new B();
}
public function doSomething()
{
echo 'A class."\n"';
}
}
class B{
public function __construct()
{
echo 'buidling B'."\n";
}
public function doSomething()
{
echo 'B class."\n"';
}
}
$c = new A(true);
var_dump($c);
$c->doSomething();
$d = $c->__construct(true);
var_dump($d);
$f = ($e = new A(true))();
var_dump($f);
buidling B
object(A)#1 (0) {
}
A class."\n"buidling B
object(B)#2 (0) {
}
buidling B
Fatal error: Uncaught Error: Object of type A is not callable in /in/oWKb3:31
Stack trace:
#0 {main}
thrown in /in/oWKb3 on line 31
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
buidling B
object(A)#1 (0) {
}
A class."\n"buidling B
object(B)#2 (0) {
}
buidling B
Fatal error: Uncaught Error: Object of type A is not callable in /in/oWKb3:31
Stack trace:
#0 {main}
thrown in /in/oWKb3 on line 31
Process exited with code 255.
buidling B
object(A)#1 (0) {
}
A class."\n"buidling B
object(B)#2 (0) {
}
buidling B
Fatal error: Uncaught Error: Function name must be a string in /in/oWKb3:31
Stack trace:
#0 {main}
thrown in /in/oWKb3 on line 31
Process exited with code 255.