如果父类和子类均为静态方式,正确的调用子类方法的方法是什么?
当我使用静态类时,它会返回错误“Call to undefined method A::multi()”,但是当我使用非静态方法时就没有问题,例如:
//-------------- STATIC ------------------
class A {
public static function calc($a,$b) {
return self::multi($a, $b);
}
}
class B extends A {
public static function multi($a, $b) {
return $a*$b;
}
}
echo B::calc(3,4); //ERROR!!
//-------------- NON-STATIC ----------------
class C {
public function calc($a,$b) {
return $this->multi($a, $b);
}
}
class D extends C {
public function multi($a, $b) {
return $a*$b;
}
}
$D = new D();
echo $D->calc(3,4); // Returns: 12
有没有一种方式可以调用子静态方法,而不需要知道它的类名?
return static::multi($a, $b);
而不是在父类中使用"self"。 - lepe