2012-06-20 51 views
0

我有這樣的父類中的PHP:不能使用權的繼承在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具有空表,所以變量$這個 - >表爲n儘管我希望它是「」my_child_table「,只要我有一個childClass對象。

有誰知道我在做什麼錯? 在此先感謝

+0

放'的var_dump($這個 - >表);'在年初' getName'並在這裏顯示結果 – zerkms

+0

好吧,我的錯,變量$表是私人的,所以這是問題所在,我將其更改爲public並且正常工作。 – novellino

+1

如果您不希望它可公開訪問但仍可覆蓋,請將其設置爲「受保護」。 – deceze

回答

1

不知道,但是這看起來非常棘手:

class childClass extends parentClass{ 
    public $table; 

parentClass已經定義了一個$table,所以很可能是重新聲明它的子類中會揍了父母的版本。你必須在這裏刪除聲明。另外,公衆的知名度並不能真正包容國家。改爲在父代中使用protected

public function __construct() 
    { 

您應該添加parent::__construct()這裏(除非父母只設置$this->table,但即使如此,它是很好的補充)

 $this->table = "my_child_table"; 
    } 
}