У меня есть 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
изменяет значения $data
из экземпляра класса producer
, как их можно отделить?
Спасибо.