我有以下父类和子类。
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类的写访问权限,因此我不能在调用methode_one
时使用static
,因此它不执行后期静态绑定。
是否有任何方法可以使用重写方法?
父类是一个定义的库,我不能修改它。
解决办法是修改父类或者完全放弃这个想法,但是你能建议其他的选择吗?
为什么不在子类中实现execute或start ?