Приветствую, есть следующий код, если попытаться выполнить его в контроллере, создав экземпляр этого класса и последовательно вызвать get_one, а затем get_two, то get_two вернет ошибку т.к. mysql-соединение уже закрыто.
class Foo extends Bar
{
function __construct()
{
parent::__construct();
$this->mysqli = new mysqli($this->cfg->db->host,
$this->cfg->db->user,
$this->cfg->db->password,
$this->cfg->db->database);
$this->mysqli->query('SET NAMES utf8');
}
public function get_one()
{
$table_one = array();
$result = $this->mysqli->query('SELECT * FROM `table_one`');
for ($i=0; $row = $result->fetch_assoc(); $i++) {
$table_one[] = $row;
}
$result->close();
$this->mysqli->close();
return $table_one;
}
public function get_two()
{
$table_two = array();
$result = $this->mysqli->query('SELECT * FROM `table_two`');
for ($i=0; $row = $result->fetch_assoc(); $i++) {
$table_two[] = $row;
}
$result->close();
$this->mysqli->close();
return $table_two;
}
}
В голову приходит только такое
public function get_one($keep = false)
{
...
if(!$keep)
$this->mysqli->close();
...
}
Как можно более-менее универсально его закрывать?