在PHP中传递对函数的引用

时间:2016-03-08 08:25:51

标签: php yii

我看到了一些类似的问题,但没有一个是我需要的 我有以下课程:

abstract class A
{
    abstract function foo(); 

    public function callingD()
    {
         D::doSomething($this->foo());  //something like that
    }
}

class B extends A
{
    function foo()
    {
       //some code
    }
}

class C extends A
{
    function foo()
    {
       //some code
    }
}

class D
{
    public static function doSomething($fooImp)
    {
       //some code
    }
}

现在,我想要的是从课程D::doSomething中的某个功能调用A,而doSomething的其中一个参数将是fooA的实现{1}}的当前实例。有可能吗?

1 个答案:

答案 0 :(得分:2)

听起来像你只是在询问如何通过callable;关于抽象类的舞蹈和歌曲是非常无关紧要的:

abstract class A {
    abstract function foo(); 

    public function callingD() {
         D::doSomething([$this, 'foo']);
    }
}

class D {
    public static function doSomething(callable $fun) {
       $fun();
    }
}

这就是它的全部内容。