У меня есть проект класса, создающий OODB с MYSQL и PHP.PHP - вызывающий объект в объекте
В настоящее время у меня есть стол, заполненный предметными коробками. У меня также есть класс ящиков, который, когда он будет построен, вытащит его из таблицы, а затем рекурсивно построит его дочерние элементы аналогичным образом. Кажется, это хорошо работает. Но я не могу вызвать функцию из дочернего окна.
Вот класс:
class Box1 {
var $id;
var $pid;
var $children;
var $type;
var $content;
var $siblingorder;
function Box1($bId){
$q ="SELECT * FROM `box` WHERE id =". $bId;
$r = mysql_query($q);
if ($r){
$row = mysql_fetch_array($r);
$this->id=$bId;
$this->pid=$row[1];
$this->children=$row[2];
$this->type=$row[3];
$this->siblingorder=$row[5];
$this->content=$row[6];
//echo $this->id."<br />";
if(isset($this->children)){
//echo $this->children."<br />";
$kids = explode(',', $this->children);
foreach ($kids as $key => $value) {
$varname = "box".$value;
//global $$varname;
//echo $varname."<br>";
$$varname = new Box1($value);
}
}
}
}//constructor
function display(){
echo "<div style='border: solid 2px;'>";
echo $this->id;
echo "<br />";
if(isset($this->children)){
$kids = explode(',', $this->children);
foreach ($kids as $key => $value) {
$varname = "box".$value;
//echo $varname."<br />";
$$varname->display();
}
}
echo "</div>";
}//End DISPLAY
function update(){
}//End UPDATE
}
Вот код вызова конструктора и функцию отображения, который, в свою очередь, необходимо вызвать функцию детей коробки дисплея:
$box1 = new Box1(1);
$box1->display();
Любая помощь или представление будет будем очень благодарны.
Это проблема с переменной областью. 'display()' не может получить доступ к '$ box1', потому что это не входит в объем этой функции. Я бы, вероятно, создал массив дочерних объектов как атрибут объекта. – andrewsi