我有以下父母和子女课程。
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
,因此它没有执行后期静态绑定。
有什么方法可以使用我可以访问的覆盖方法吗?
父类是一个已定义的库,我无法对其进行修改。
出路是修改父类或完全放弃这个想法,但你能建议任何其他选择吗?
答案 0 :(得分:0)
为什么不在子类中实现execute或start?