繁体   English   中英

php polymorphism - 在多态子函数中调用父函数

[英]php polymorphism - Call a parent function in polymorphed child function

这是父类:

    class Event {

    public function getLang($lang){
     $sql = "select * from Event where EventID =" . $this->EventID . "AND Lang =" . $lang;
    $result = $this->selectOneRow($sql);
    }
}

这是孩子:

class Invitation extends Event{

public function getLang($lang){
Event::getLang($lang);

$sql = "select * from invitation where EventID =" . $this->EventID . " and Lang = " . $lang;

    }
}

我有一些希望EVENT :: getLang($ lang)可以工作,但在我回显查询后,我可以看到它没有一个EventID。

有没有正确的方法来做到这一点?

我尝试直接复制/粘贴子代码,但这也无法工作,因为我在父级的级别上得到了事件选择结果的变量。

有没有办法解决这个问题,还是我处于僵局?

我想你想要使用parent关键字:

class Invitation extends Event{
    public function getLang($lang){
       parent::getLang($lang);

       $sql = "SELECT * FROM invitation WHERE EventID =" . $this->EventID . " AND Lang = " . $lang;
    }
}

你必须使用parent

class Invitation extends Event{

    public function getLang($lang){
        parent::getLang($lang);
        ....
    }
}

Event::getLang($lang); 实际上是试图静态调用getLang 看到这些链接:

范围解析运算符(::)

该方法不是静态的,因此不需要调用静态方法Event::getLang() ,而是需要调用parents方法

parent::getlang($lang);

更新:我的意思是,使用Event::getLang()您通常会在类上调用静态方法,可以扩展也可以不扩展。 其中parent::method()始终调用继承的方法并保留调用方法的范围(类或静态), Classname::method()始终尝试在特定类上调用静态方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM