0

私はPHPでこの親クラスを持っています:

 class parentClass{
    public $table;

    public function __construct(){
       $this->table = "my_parent_table";
    }

    public function getName($id) {
      $strQuery = "SELECT name FROM $this->table WHERE id=$id";

      $result = mysql_query($strQuery);
      if ($result) {
         $row = mysql_fetch_object($result);
         if ($row) {
             return $row->name;
          } else {
             return false;
          }
      } else {      
         return false;
      }
    } 
 }

そして、これを継承する別のクラスもあります:

 class childClass extends parentClass{
     public $table;

     public function __construct(){
       $this->table = "my_child_table";
     }
 }

次に、私がやっている別のファイルで:

 $myObj = new childClass();
 $name = $myObj->getName('1');

ここでの問題は、getName 関数に null テーブルがあるため、変数 $this->table が null であるのに対し、childClass オブジェクトがある限り、変数を ""my_child_table" にしたいことです。

私が間違っていることを誰かが知っていますか?前もって感謝します

4

1 に答える 1

1

わかりませんが、これは注意が必要です。

class childClass extends parentClass{
     public $table;

parentClassすでにを定義している$tableので、子クラス内でそれを再宣言すると、親のバージョンが壊れる可能性があります。ここで宣言を削除する必要があります。また、一般の人々の可視性は、実際には状態をうまくカプセル化していません。protected代わりに親で使用してください。

    public function __construct()
    {

ここに追加する必要がparent::__construct()あります(親が設定するだけの場合を除きます$this->tableが、それでも追加するのは良いことです)

        $this->table = "my_child_table";
    }
}
于 2012-06-20T10:45:50.970 に答える