这是父类:
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。
有没有正确的方法呢?
我尝试直接复制/粘贴子代码中的代码,但这也无法工作,因为我在父级的级别上得到了事件选择结果的变量。
有没有办法解决这个问题,还是我处于僵局?
答案 0 :(得分:5)
我认为您希望使用parent
关键字:
class Invitation extends Event{
public function getLang($lang){
parent::getLang($lang);
$sql = "SELECT * FROM invitation WHERE EventID =" . $this->EventID . " AND Lang = " . $lang;
}
}
答案 1 :(得分:0)
您必须使用parent
class Invitation extends Event{
public function getLang($lang){
parent::getLang($lang);
....
}
}
Event::getLang($lang);
实际上试图静态调用getLang
。请参阅以下链接:
答案 2 :(得分:0)
该方法不是静态的,所以不需要调用静态方法Event::getLang()
,而是需要调用parent方法
parent::getlang($lang);
更新:
我的意思是,Event::getLang()
通常会在类上调用静态方法,可能会扩展也可能不扩展。其中parent::method()
总是调用继承的方法并保持调用方法的范围(类或静态),Classname::method()
总是尝试在特定类上调用静态方法。