[英]Calling an overriden static method from parent
我有兩節課。 孩子和父母。 父進程從子進程調用靜態方法(這是子類中的覆蓋靜態父方法),我得到一般服務器錯誤。 當我刪除關系('extends'部分)時,一切都很好並且沒有錯誤。 不知道為什么。 你不能覆蓋靜態方法嗎? 尋找答案,但似乎無法找到它們。
Class Fase {
public static function getbyId($id) {
//some stuff
}
public function getsomefaseitem($fase_item_id) {
FaseItem::getbyid($fase_item_id);
}
}
Class FaseItem extends Fase {
public static function getbyId($id) {
}
}
但這看起來很奇怪。 基地應該不知道派生的。
也許使用static::
而依賴於重寫靜態成員函數 - 或“后期靜態綁定”。 你需要PHP 5.3。
<?php
class Fase {
public static function getbyId($id) {
echo "Fase::getbyId\n";
}
public function getsomefaseitem($fase_item_id) {
static::getbyid($fase_item_id); // <---
}
}
class FaseItem extends Fase {
public static function getbyId($id) {
echo "FaseItem::getbyId\n";
}
}
$f = new Fase();
$f->getsomefaseitem(0);
?>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.