2

私はこの状況に陥り、それを汚くハッキングしました。しかし、私は疑問に思います、いくつかのきれいな方法はありますか?

class base{
    var $value;
    public function getValue(){
        return 'returned from base: '. $value;
    }
}

class object extends base{
    public function getValue(){
        $this->value = 'wrong value';
        return parent::getValue();
    }
}


class overwrite extends object{
    public function getValue(){
        $this->value = 'right value';

        ?????

    }
}

$o = new overwrite;
echo $o->getValue();

私が編集できるのは だけですoverwrite。を呼び出すparent::getValue()と、値が間違った値で上書きされます。のようにクラスに名前を付けると、基本クラスにはプロパティが設定されbase::getValue()ません。$value

4

1 に答える 1

1

質問を終える前にこれを理解しましたが、とにかく投稿することにしました:

base::getValue() は正しい解決策のようです.phpはそこで魔法を行うようです.そのため、baseクラスは$valueその子から呼び出されたときにプロパティが設定されています.

于 2013-05-15T11:58:03.037 に答える