@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]);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы