0

MYSQL と PHP を使用して OODB を作成するクラス プロジェクトがあります。

現在、オブジェクトボックスで満たされたテーブルがあります。また、構築時にテーブルからデータを取得し、同様の方法でその子を再帰的に構築するボックスクラスもあります。それはうまくいっているようです。しかし、子ボックスから関数を呼び出すことができません。

クラスは次のとおりです。

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();

どんな助けや洞察も大歓迎です。

4

1 に答える 1