PHP从父类重载函数

时间:2010-07-10 07:20:16

标签: php oop overloading

我有一个我认为应该工作的东西,但事实并非如此。

我有几个Controller _ ##类,它们都来自Controller_Core。每个Controller _ ## - 类都有一个公共函数Save()。现在我想我要执行一些其他的一般性检查(每个$ _POST-var的addslashes)并且想如果我将一个公共函数Save()添加到Controller_Core,它将默认执行,因为## - 类从它扩展。但事实并非如此。

我的问题;我想要实现的是可能的吗?或者我误以为这会有用吗?

2 个答案:

答案 0 :(得分:5)

在方法的子类版本中调用parent::Save()

请参阅http://php.net/manual/en/keyword.parent.php

答案 1 :(得分:1)

或者您可以应用重构来提取核心类的常见行为:

class Controller_Core {

    public function save() {
        if ( ! $this->_validateInfo() ) {

            return false;
        }

        return $this->_doSave();
    }

    protected function _validateInput() {
        //-- do stuff

        return true;
    }

    protected function _doSave() {
        //-- do stuff

        return true;
    }

}

您可以在子类中编写特定代码,如:

class Controller_Extended extends Controller_Core {

    protected function _doSave() {

        //-- a new return
        return true;
    }
}