Как динамически объявить возвращаемый тип функции в PHP 7 - PullRequest
0 голосов
/ 19 июня 2019

Я создал метод для динамического прохождения методов объекта и создания массива с анонимными функциями, которые будут вести себя как фабрики.

У меня проблема с тем, как динамически объявить тип возврата анонимной функции.Я не смог найти правильный синтаксис, и я не уверен, что это вообще возможно в PHP.

Я хотел бы создать что-то подобное в упрощенной версии:

$services = [];
$object_class = get_class($object);
$method_names = get_class_methods($object_class);

// go through all object methods
foreach ($method_names as $method_name) {
    // get return type of this method
    $method = new ReflectionMethod($object_class, $method_name);
    $type = $method->getReturnType();

    // use it as return type for this anonymous function (not working)
    $services[$method_name] = function() use ($object, $method_name): $type {
        return call_user_func([$object, $method_name]);
    };
}

Но яполучаю синтаксическую ошибку здесь.

1 Ответ

0 голосов
/ 19 июня 2019

Я не уверен, возможно ли это, даже со всей магией строк, которую может сделать PHP. Что вы можете сделать, это что-то вроде:

$result = call_user_func...;
return gettype($result) === $type ? $result : null;

или выбросить некоторые исключения, если они не совпадают.

...