我看到了一些类似的问题,但没有一个是我需要的 我有以下课程:
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
的其中一个参数将是foo
中A
的实现{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();
}
}
这就是它的全部内容。