我有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