我有2個繼承自father
類的類。 「父級」類有一個protected
變量,這個變量正在填充在child
這兩個類中,每個類都爲它填充不同的數據庫信息。類繼承和實例交互
我的問題是,當我創建兩個類的實例時,第二個實例更改第一個實例的值。
下面是代碼:
class User
{
//array with the MySQL Server details//
private $serverInfoArray = array("host" => HOST, "user" => USER, "pass" => PASS);
protected $data; //This will be populated with data in both of the "child" classes.
//some database connection functions....//
public function setData(){} //implemented on "child" classess
public function getData(){} //implemented on "child" classess
}
,這裏是一個child
類:
class Producer extends User
{
function __construct($id)
{
$this->setData($id);
}
public function setData($id)
{
global $serverInfoArray, $data;
$connectionFB;
$query = "MY FIRST QUERY"; //IN THE SECOND CHILD CLASS
//IT HAS DIFFERENT QUERY
$result = mysql_query($query, $connectionFB);
$i=0;
while($row = mysql_fetch_array($result))
{
$data[$i] = $row;
$i++;
}
}
public function getData()
{
global $data;
return $data;
}
}
第二類具有相同的結構,但其名稱不同,正在執行的查詢。其聲明是class Account extends User
當我創建2個實例:
$producer = new Producer($_SESSION['PRODUCER_ID']);
$account = new Account($_SESSION['ACCOUNT_ID']);
,並做到這一點:
var_dump($producer->getData());
我得到的是由第二查詢填充的$data
值。如果我不創建account
實例,它將返回第一類中填充的值。
爲什麼account
實例從producer
類實例更改$data
的值,我如何區分它們?
謝謝。
你開始關於受保護的類變量的問題,但實際的方法不使用它們。沒有幫助;) - 爲什麼你不在父/基類中做實際的mysql查詢? – hakre 2012-03-12 14:27:26