1

我有以下父子类。

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

有什么方法可以访问覆盖方法吗?

父类是一个定义的库,我不能修改它。

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

4

1 回答 1

0

为什么不在子类中实现执行或启动?

于 2013-01-11T06:55:37.870 回答