我正在努力让一个班级工作,但由于某种原因,我无法找到我在班级中建立的变量。以下是类的代码:class file url(cls_question_object.php)
class question_object{
// the id to the question
public $i_id = "";
// the question string
public $s_qString = "";
// the question type
public $s_qType = "";
/* the array of answer strings
*/
public $a_qAnswerStrings = array();
public $a_qAnswerSet = array("id"=>"","string"=>"");
}
以下是我正在测试我的类的代码:file url(test_question_object.php)
include("cls_question_object.php");
/* - test for class question object -
*/
$cls_obj = new question_object;
$cls_obj->$i_id = "1";
$cls_obj->$s_qString = "test question string";
$cls_obj->$s_qType = "fib";
$cls_obj->$$a_qAnswerStrings[0]['id'] = "0";
$cls_obj->$$a_qAnswerStrings[0]['string'] = "test answer string";
print_r($cls_obj);
以下是我遇到的错误:
Notice: Undefined variable: i_id in C:\wamp\www\Exam Creator\test_question_object.php on line 9
答案 0 :(得分:2)
您可以通过执行以下操作来访问这些实例变量:
$cls_obj->i_id = "1";
而不是:
$cls_obj->$i_id = "1";
然而,将实例变量设为公开通常是不好的做法,而是将它们设为私有并生成mutator methods。
你会做这样的事情:
private $i_id = "";
public function getId(){
return $this->id;
}
public function setId($id){
$this->id = $id;
}
你可以像这样访问这些函数:
$cls_obj = new question_object();
$cls_obj->setId(5);
$id = $cls_obj->getId();
答案 1 :(得分:1)
$ obj-> $ field_name这个错误,请使用$ obj-> field_name访问您对象的字段。 在你的情况下,它应该像这样使用:
$cls_obj = new question_object;
$cls_obj->i_id