后期静态绑定|不使用`static`关键字修改父类

时间:2013-01-11 06:42:41

标签: php late-static-binding

我有以下父母和子女课程。

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,因此它没有执行后期静态绑定。

有什么方法可以使用我可以访问的覆盖方法吗?

父类是一个已定义的库,我无法对其进行修改。

出路是修改父类或完全放弃这个想法,但你能建议任何其他选择吗?

1 个答案:

答案 0 :(得分:0)

为什么不在子类中实现execute或start?