将可呼叫分解为变量而不调用



i有一个具有$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() {};
}

通过从$results变量获取的字符串来解决方法和类获取。类和方法名称既有效又有效。

当我尝试调用此问题时,它会从方法返回返回值,而不是方法本身。

如何返回方法本身而不是未调用方法的内容?

只返回值。

而不是

    return $class->$method();

使用

    return $class->$method;

相关内容

  • 没有找到相关文章

最新更新