簡體   English   中英

從父級調用重寫靜態方法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM