从实例化的孩子调用父母不符合严格的标准

时间:2014-09-22 01:41:24

标签: oop parent-child

我正在尝试从其子方法中调用父方法,该方法具有相同的方法名称。这样做会导致严格的标准错误。有一个简单的重命名子方法的解决方案。但是,有没有办法在没有标准警告的情况下保持两种方法的名称相同?感谢。

严格标准:Child :: getContentFromDb()的声明应该与xxx

上/foo/Child.class.php中的Parent :: getContentFromDb($ id)兼容

伪代码示例:

class Parent {
    protected function getInfoFromDb($id) {
        return $infoFromDb;
    }
}

class Child extends Parent {
    public static $id = xx;
    public $info = array();

    public function __construct() {
        $this->info = $this->getInfoFromDb();
    }

    public function getInfoFromDb() {
        // the line below causes the problem
        return parent::getInfoFromDb(self::$id);
    }
}

1 个答案:

答案 0 :(得分:1)

您的方法覆盖应采用与您覆盖的参数列表相同的参数列表。

e.g。

class ParentClass {

    protected function getInfoFromDb($id) {
        return "INFO FROM DB:" . $id;
    }
}

class Child extends ParentClass {
    public static $id = "xx";
    public $info = array();

    public function __construct() {
        $this->info = $this->getInfoFromDb();
    }

    /**
     * @param specific ID, or do not set for default action.
     * @return string
     */
    public function getInfoFromDb($id = false) {
        return parent::getInfoFromDb(self::$id);
    }
}