PHP перегружает функцию из родительского класса - PullRequest
0 голосов
/ 10 июля 2010

У меня есть вещь, которая, как я думал, должна работать, но это не так.

У меня есть несколько классов Controller _ ##, все они берутся из Controller_Core.Каждый Контроллер _ ## - класса имеет открытую функцию Save ().Теперь я решил, что хочу выполнить некоторые другие общие проверки (добавочные черты для каждого $ _POST-var) и подумал, что если я добавлю публичную функцию Save () в Controller_Core, она будет выполнена по умолчанию, потому что класс ## - происходит от нее,Однако это не так.

Мой вопрос;Возможно ли то, что я пытаюсь достичь?Или я ошибаюсь, думая, что это сработает?

Ответы [ 2 ]

5 голосов
/ 10 июля 2010

Вызовите parent::Save() в подклассе метода.

См. http://php.net/manual/en/keyword.parent.php.

1 голос
/ 10 июля 2010

Или вы можете применить рефакторинг для извлечения общего поведения из вашего основного класса:

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;
    }
} 
...