将callable解析为变量而不调用它

时间:2016-06-15 09:40:08

标签: php oop callable

我有一个具有$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变量的字符串解析方法和类。类和方法名称都有效且有效。

当我尝试调用它时,它返回方法的返回值,但不返回方法本身。

如何在不调用方法的情况下返回方法本身而不是方法的内容?

1 个答案:

答案 0 :(得分:0)

只需返回价值。

相反

SELECT  *
FROM    dbo.Table1
WHERE   id Table1.IN ( SELECT  table2.id
                FROM    dbo.table2 )
        OR Table1.id IN ( SELECT   table3.id
                   FROM     Table3 ) 

使用

    return $class->$method();