如何使继承的类在PHP中从同一个类运行一个方法

时间:2013-04-21 20:56:06

标签: php inheritance

我这里的OOP错了。

我想继承Class A

return_output方法会做一些常见的事情,所以我不想在继承的类中写出它。

但是当我执行B->return_output()时,我希望它在do_something中运行Class B方法,但我发现它始终从Class A运行方法。

我应该用其他东西替换$this吗?

class A {
    private function do_something() {
        // do something
    }

    public function return_output() {
        $op = $this->do_something();

        // add some wrappers to $op
        return $op;
    }
}


class B extends A {    
    private function do_something() {
        // do something different
    }    
}


var newClass = new B;
echo B->return_output();

1 个答案:

答案 0 :(得分:3)

使用protected而不是private,因为您在范围内运行它而且范围b无法访问私有范围a:

class A {
        protected function do_something() {
            echo('ado_something');
        }

        public function return_output() {
            $op = $this->do_something();

            // add some wrappers to $op
            return $op;
        }
    }


    class B extends A {    
        protected function do_something() {
             echo('bdo_something');
        }    
    }


    $newClass = new B;
    echo $newClass->return_output();