【发布时间】:2015-05-17 12:25:07
【问题描述】:
我有一个抽象类,它有一个使用静态函数的方法。这个静态函数在子类中定义,每个子类都不同。在脚本中确定将使用哪个子类来创建对象。请看下面的超级简化代码:
abstract class fooClass implements iFooClass {
function getBar(){
$bar = self::getSomething();
return $bar;
}
}
interface iFooClass{
static function getSomething();
}
class fooSubClass_A extends fooClass {
static function getSomething() {
//do something;
//return something;
}
}
class fooSubClass_B extends fooClass {
static function getSomething() {
//do something else;
//return something else;
}
}
$foo = New fooSubClass_A;
$bar = $foo->getBar();
这段代码给了我这个错误:
致命错误:无法在第 12 行的 C:\wamp\www\Classes\fooClass.php 中调用抽象方法 iFooClass::getSomething()
我认为由于子类可以访问超类方法getBar,它将从子类调用,因此可以访问其静态函数。显然不是。有没有办法重做它以使其工作?
【问题讨论】:
标签: php class object abstract-class static-methods