Может быть, вам нужно что-то вроде этого:
class MyClass
{
protected static $overrider = null;
public static function setOverrider(Callable $callback)
{
$reflection = new ReflectionFunction($callback);
if ('string' != $reflection->getReturnType()) {
throw new \Exception('Wasnt a string!');
}
self::$overrider = $callback;
}
}
Итак, как я упоминал ранее в комментариях: вам нужно объявить возвращаемый тип вашего вызываемого объекта (который является PHP7 + функцией ),Это ОБЯЗАТЕЛЬНО, иначе не будет работать
Примерно так:
function my_function(): string
{
return 'hello';
}
или вот так, если вы предпочитаете анонимные функции ( Закрытие ):
$my_callable = function(): string {
return 'hello';
}
Это так просто: интерпретатор не может знать возвращаемый тип данных функции, не вызывая ее, если вы сначала не скажете интерпретатору, что должна возвращать рассматриваемую функцию.