我有以下父子类。
class Parent_class {
protected static function method_one() {
echo "I am in Parent_class in method_one";
}
protected function execute() {
static::method_one();
}
public function start() {
$this->execute();
}
}
class Child_class extends Parent_class {
protected static function method_one() {
echo "I am in Child_class in method_one";
}
}
$obj = new Child_class();
$obj->start();
Result - it is calling Child class method.
结果与预期一致,因为 php5.3 支持静态后期绑定,并带有已保留的关键字static
。
但问题是,我没有对 Parent 类的写访问权限,因此我不能static
在调用时使用methode_one
,因此它没有执行后期静态绑定。
有什么方法可以访问覆盖方法吗?
父类是一个定义的库,我不能修改它。
出路是修改父类或完全放弃这个想法,但你能提出其他选择吗?