Mar*_*ijn 2 php inheritance visibility
我有两节课.孩子和父母.父进程从子进程调用静态方法(这是子类中的覆盖静态父方法),我得到一般服务器错误.当我删除关系('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) {
}
}
Run Code Online (Sandbox Code Playgroud)
Lig*_*ica 10
但这看起来很奇怪.基地应该不知道派生的.
也许使用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);
?>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4518 次 |
| 最近记录: |