![](/img/trans.png)
[英]Calling a static method from another static method: PHP Fatal error: Call to undefined function
[英]PHP: “Call to undefined method” error when calling static method from parent
如果兩者都是靜態的,那么從父類調用子類方法的正確方法是什么?
當我使用靜態類時,它返回錯誤“ 調用未定義的方法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
有沒有辦法在不知道其類名的情況下調用子靜態方法?
它只能在PHP 5.3及更新版本中使用, 后期靜態綁定 ,其中PHP 5.3能夠訪問子類中的靜態成員,而不是self
引用的類,因為它在運行時而不是編譯時解析。
不幸的是,我不認為在PHP 5.2及更早版本中有這個解決方案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.