<?php
class ObjectNameGenerator
{
public function __invoke($object)
{
return $object->id;
}
}
class b extends a
{
public function __construct()
{
parent::setCallableGenerator(new ObjectNameGenerator());
}
}
class a
{
private $callableGenerator = null;
public function setCallableGenerator(callable $func)
{
$this->callableGenerator = $func;
}
public function build()
{
$object = new StdObj();
$object->id = 99;
if($this->callableGenerator !== null) {
return call_user_func($this->callableGenerator, $object);
} else {
return 'no callable function';
}
}
}
$b = new b();
$b->build();
Fatal error: Uncaught Error: Class "StdObj" not found in /in/79O8n:30
Stack trace:
#0 /in/79O8n(42): a->build()
#1 {main}
thrown in /in/79O8n on line 30
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 Error: Class "StdObj" not found in /in/79O8n:30
Stack trace:
#0 /in/79O8n(42): a->build()
#1 {main}
thrown in /in/79O8n on line 30
Process exited with code 255.
Fatal error: Uncaught Error: Class 'StdObj' not found in /in/79O8n:30
Stack trace:
#0 /in/79O8n(42): a->build()
#1 {main}
thrown in /in/79O8n on line 30
Process exited with code 255.
Output for 5.5.0 - 5.5.38, 5.6.0 - 5.6.40
Fatal error: Class 'StdObj' not found in /in/79O8n on line 30
Process exited with code 255.