代码之家  ›  专栏  ›  技术社区  ›  Ben

PHP从父类重载函数

  •  0
  • Ben  · 技术社区  · 16 年前

    我有几个控制器###类,它们都是从控制器#核心扩展而来的。每个控制器###-类都有一个公共函数Save()。现在,我想执行一些其他常规检查(addslashes for each$\u POST-var),并认为如果我向控制器核心添加一个公共函数Save(),它将在默认情况下执行,因为##-类是从它扩展而来的。然而,事实并非如此。

    我的问题;我想达到的目标有可能吗?还是我错了,以为这会奏效?

    2 回复  |  直到 14 年前
        1
  •  5
  •   Borealid    16 年前

    呼叫 parent::Save() 在方法的子类版本中。

    看到了吗 http://php.net/manual/en/keyword.parent.php

        2
  •  1
  •   JonG    16 年前

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

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