PHP,类中的未识别变量

时间:2011-03-21 02:03:19

标签: php class variables

我正在努力让一个班级工作,但由于某种原因,我无法找到我在班级中建立的变量。以下是类的代码: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

2 个答案:

答案 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