@kaxa3201

Как выполнить вызов метода в другом методе?

Есть абстрактный классс и у него есть метод execute($function) в аргумент которого я хочу передать другой метод , чтобы выполнить это метод в execute().
В моем примере я хочу отловить exceptions в методе execute ,

Вот что я пытаюсь сделать

abstract class A
{
    protected function execute(
        $function
    ) {
        try {

            $response = $function;
        } catch (Exception $exception) {

        }
    }
}

class B
{
    public function test()
    {
        $response = call_user_func('parent::execute', [$apiInstance->createListing($createListingRequest)]);
    }
}
  • Вопрос задан
  • 45 просмотров
Решения вопроса 1
ipatiev
@ipatiev Куратор тега PHP
Потомок старинного рода Ипатьевых-Колотитьевых
call_user_func нинужна
class A
{
    function execute($function, $params = []) {
        return $function(...$params);
    }
    function payload($param) {
        return $param * $param;
    }
}
$a = new A;
echo $a->execute([$a, 'payload'], [5]);


а можно ещё так, если объект тот же самый

class A
{
    function execute($function, $params) {
        return [$this,$function](...$params);
    }
    function payload($param) {
        return $param * $param;
    }
}
$a = new A;
echo $a->execute('payload', [5]);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
24 апр. 2024, в 20:35
5000 руб./за проект
24 апр. 2024, в 19:51
1000 руб./за проект