Как переопределить метод 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
225 +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 Апр в 13:09
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 436 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир