Преобразование вызываемого в переменную без вызова его

У меня есть класс, который имеет $action переменная, которая принимает вызываемый в качестве значения. Обычно при инициализации этого значения я могу сделать что-то вроде этого:

$this->action = function() {
echo "My function";
}

Затем я бы вызвал функцию, выполнив что-то вроде этого:

$this->action();

Сам класс выглядит так:

<?php

/**
* Resolves an non-callable action
*/
class ActionResolver
{
private $action;

/**
* Action constructor.
*
* @param string $action
*/
public function __construct($action)
{
$this->action = $action;
}

public function resolve()
{
$actionResolver = new ActionResolver();
$results = ...
$this->action = $actionResolver->resolveCallable($results);
}

/**
* @return callable
*/
public function getAction()
{
return $this->action;
}
}

в resolveCallable() функция, действие должно быть разрешено методом другого объекта по результатам $results переменная. Этот метод в ActionResolver учебный класс. Метод выглядит так:

public function resolveCallable(array $results)
{
$class = $results[0];
$method = null;
if (isset($results[1])) {
$method = ...
}

$object = new $class;
if (!is_null($method)) {
return $class->$method();
}
return function() {};
}

Метод и класс get разрешаются строкой, взятой из $results переменная. Имя класса и метода являются действительными и работают.

Когда я пытаюсь вызвать это, он возвращает возвращаемое значение из метода, но не сам метод.

Как я могу вернуть сам метод вместо содержимого метода, не вызывая его?

1

Решение

Просто верните значение.

Вместо

    return $class->$method();

использование

    return $class->$method;
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]