另一种分配函数而不执行它的方法

时间:2015-03-12 14:16:05

标签: php

是否有其他方法可以在不执行的情况下分配或返回函数?我认为这不是最好的解决方案......

class Foo {
    public function getDisplayFunction() {
        return function() {
            $this->display();
        };
    }
    private function display() {
        echo 'something';
    }
}

$display = (new Foo())->getDisplayFunction();

//and execute it
$display();

1 个答案:

答案 0 :(得分:0)

我得到它...在尝试了100件事和1小时搜索之后。这里是我对所有寻求解决方案的人的回答。

public function getDisplayFunction() {
    return function() {
        return $this->display();
    }
}

与:

相同
public function getDisplayFunction() {
    return [$this, 'display'];
}

优点是您不必通过此解决方案传递args。这就是问题的原因。