PHP, Неопознанная переменная в классе - PullRequest
0 голосов
/ 21 марта 2011

Я пытаюсь заставить класс работать, но по какой-то причине я не могу найти переменные, которые я встроил в класс. Вот код для класса: 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"=>"");

}

А вот код, с которым я тестирую свой класс: 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 ]

2 голосов
/ 21 марта 2011

Вы можете получить доступ к этим переменным экземпляра, выполнив:

$cls_obj->i_id = "1";

вместо:

$cls_obj->$i_id = "1";

Однако, как правило, не рекомендуется делать переменные экземпляра общедоступными, а делать их закрытыми и использовать методы-мутаторы .

Вы бы сделали что-то вроде этого:

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 голос
/ 21 марта 2011

$ obj -> $ field_name это неправильно, пожалуйста, используйте $ obj-> field_name для доступа к полю вашего объекта.в вашем случае это следует использовать так:

$cls_obj = new question_object;
$cls_obj->i_id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...