繁体   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