php覆盖方法并调用覆盖

时间:2013-06-06 16:11:48

标签: php class methods overwrite

我知道只需使用其他方法名称就可以避免这种情况,但我很好奇是否可以使用以下方法。

我有这个课程:(当然它有更多的方法,但它们与问题无关)

class db extends mysqli {
    public function query($sql){
        $sql = $this->parent->query($sql);

        if($this->error){
            echo "<script>popup('SQL error bro!');</script>";
        }else{
            return $sql;
        }
    }
}

我想做的是从我创建的query()方法中调用原始的mysqli query()方法。是否可以或我将开始重命名?

而且我还想指出这纯粹是为了开发使用,我知道用户不应该看到sql错误。我想这样做的原因是今天我需要将表列名从id更改为vid,然后我的整个系统停止工作,我花了30分钟进行研究,我想在将来阻止它。

3 个答案:

答案 0 :(得分:1)

可能但可能不是最佳做法:

parent::query($sql)

答案 1 :(得分:1)

更改

$this->parent->query($sql);

$sql = parent::query($sql);

答案 2 :(得分:1)

您可以通过调用

来调用超类的方法
parent::query();

另见: http://www.php.net/manual/en/keyword.parent.php