类的一个函数中未设置实例变量


Instance variable not set in one function of class

这个问题真的让我头疼。

我正在为Moodle开发一个自定义等级导出插件,并对grade_export类进行了分类:

class grade_export_sitscsv extends grade_export {
...

我创建的表单设置了两个自定义变量,因此我实现了一个*process_form()*函数,然后它调用父类中的函数:

function process_form($formdata) {
  $this->grade_item = preg_replace('/itemids'[([0-9]+)']/',''1',$formdata->grade_item);
  $this->sits_assnum = $formdata->sits_assnum;
  parent::process_form($formdata);
}

我可以看到这些实例变量是在我的*display_preview()*函数中设置的:

public function display_preview() {
  echo("<h2>Do we need a preview?</h2>");
  echo("<p> Grade item: ".$this->grade_item.", SITS num: ".$this->sits_assnum."</p>");
}

(例如,打印等级项目:7487,SITS编号:7)。

然而,当我尝试使用*print_grades()*函数中的变量时,它们没有被设置:

public function print_grades() {
    global $CFG;
    echo("Grade item: ".$this->grade_item.", SITS num: ".$this->sits_assnum."'n");

等级项目:,SITS编号:打印到我的输出文件中。

如果有任何建议可以帮助我解决这个问题,我将不胜感激。

谢谢你的回答,Michael和mkaatman——在一位同事的帮助下,我终于解决了。

问题是,调用print_grades()的对象与调用display_preview(,并且从该数据实例化了一个新对象。

我只需要确保我的数据被写入第二个表单,然后传递给新对象。