Как переопределить метод db? Есть такой класс добавления заказа:require_once('Simpla.php');
class Orders extends Simpla
{
public function add_order($order)
{
$order = (object)$order;
$order->url = md5(uniqid($this->config->salt, true));
$set_curr_date = '';
if(empty($order->date))
$set_curr_date = ', date=now()';
$query = $this->db->placehold("INSERT INTO __orders SET ?%$set_curr_date", $order);
$this->db->query($query);
$id = $this->db->insert_id();
return $id;
}
}
Класс соединения с базой:require_once('Simpla.php');
class Database extends Simpla
{
public function connect()
{
// При повторном вызове возвращаем существующий линк
if(!empty($this->link))
return $this->link;

// Иначе пытаемся подключиться
if(!$this->link = mysql_connect($this->config->db_server, $this->config->db_user, $this->config->db_password))
{
trigger_error("Could not connect to the database. Check the config file.", E_USER_WARNING);
return false;
}
if(!mysql_select_db($this->config->db_name, $this->link))
{
trigger_error("Could not select the database.", E_USER_WARNING);
return false;
}

// Настраиваем соединение
if($this->config->db_charset)
mysql_query('SET NAMES '.$this->config->db_charset, $this->link);
if($this->config->db_sql_mode)
mysql_query('SET SESSION SQL_MODE = "'.$this->config->db_sql_mode.'"', $this->link);
if($this->config->timezone)
mysql_query('SET SESSION time_zone = "'.$this->config->db_timezone.'"', $this->link);

return $this->link;
}
}
Есть конфиг с дб. Привел метод соединения с дб. Как мне его переопределить в методе добавления заказа в бд?

21 Авг 2019 в 07:02
252 +1
0
Ответы
1

Для того чтобы переопределить метод db в классе Orders, вы можете создать новый метод connect_db() в классе Orders, который будет использовать метод connect() из класса Database. Затем вы можете вызвать этот новый метод connect_db() в методе add_order().

Пример:

require_once('Simpla.php');
class Orders extends Simpla
{
public function add_order($order)
{
$order = (object)$order;
$order->url = md5(uniqid($this->config->salt, true));
$set_curr_date = '';
if(empty($order->date))
$set_curr_date = ', date=now()';
// Переопределение метода db соединения с базой
$this->connect_db();
$query = $this->db->placehold("INSERT INTO __orders SET ?%$set_curr_date", $order);
$this->db->query($query);
$id = $this->db->insert_id();
return $id;
}
public function connect_db()
{
// Создаем экземпляр класса Database
$db_class = new Database();
// Вызываем метод connect() из класса Database
$this->db = $db_class->connect();
}
}
class Database extends Simpla
{
public function connect()
{
// Текущий метод connect() без изменений
if(!empty($this->link))
return $this->link;
if(!$this->link = mysql_connect($this->config->db_server, $this->config->db_user, $this->config->db_password))
{
trigger_error("Could not connect to the database. Check the config file.", E_USER_WARNING);
return false;
}
if(!mysql_select_db($this->config->db_name, $this->link))
{
trigger_error("Could not select the database.", E_USER_WARNING);
return false;
}
if($this->config->db_charset)
mysql_query('SET NAMES '.$this->config->db_charset, $this->link);
if($this->config->db_sql_mode)
mysql_query('SET SESSION SQL_MODE = "'.$this->config->db_sql_mode.'"', $this->link);
if($this->config->timezone)
mysql_query('SET SESSION time_zone = "'.$this->config->db_timezone.'"', $this->link);
return $this->link;
}
}

Теперь при вызове метода add_order() в классе Orders будет происходить переопределение метода db для соединения с базой данных.

20 Апр 2024 в 13:09
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир