<MyRusakov.ru />

Создание Интернет-магазина на OpenCart 2.0

Создание Интернет-магазина на OpenCart 2.0

Видеокурс "Создание Интернет-магазина на OpenCart 2.0" обучит Вас созданию любых Интернет-магазинов на OpenCart 2. В первом разделе курса разбираются абсолютно все возможности данного движка с примерами.

Во втором разделе создаётся полноценный Интернет-магазин, где Вы уже всё увидите своими глазами.

И, наконец, в третьем разделе курса созданный Интернет-магазин будет размещён в Интернете.

К курсу так же идут бесплатные и очень ценные Бонусы сопоставимые с самим курсом: "Как сэкономить на Яндекс.Директ до 50%", "Дропшиппинг" и "Как раскрутить Интернет-магазин".

Подробнее
Подписка

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Каким движком Вы предпочитаете пользоваться?

Форум сайта MyRusakov.ru

Класс БД на Singleton
30.06.2012 16:00:58 Класс БД на Singleton Сообщение #1
brussens

brussens

Мега-мастер

Мега-мастер

Дата регистрации:
11.10.2011 22:50:07

Сообщений: 438

Михаил, собственно имею вот такой класс основанный на Singleton
<?php
class DB {
private static $msqlicnct = NULL;
private function __construct() {
$this->db = new Mysqli('localhost', 'root', '', 'steel');
$this->db->query("SET lc_time_names = 'ru_RU'";
$this->db->query("SET NAMES 'utf8'";
}
private function __clone() {}
private function __wakeup() {}
public static function select() {
if ( is_null(self::$msqlicnct) ) {
self::$msqlicnct = new DB();
}
return self::$msqlicnct;
}
public function selectForums() {//извлечение всех форумов
$b = $this->db->query("SELECT * FROM forums ORDER BY pn";
return $b;
}
public function selectForumRazdels($id) {//извлечение разделов форума по id форума
$b = $this->db->query("SELECT * FROM razdels WHERE forum_id = '" . $id . "' ORDER BY pn";
return $b;
}
public function selectThemeNum($id) {//информация о количестве тем в разделе
$b = $this->db->query("SELECT COUNT(*) FROM `themes` WHERE `razdel_id`='" . $id . "'";
return $b;
}
public function selectTopicNum($id) {//информация о количестве топиков в разделе
$b = $this->db->query("SELECT COUNT(*) FROM `topics` WHERE `razdel_id`='" . $id . "'";
return $b;
}
}
?>

Хочу сделать автоматическое отключение от БД ($Mysqli->close()
Как лучше сделать его? Через приватный деструктор?
Профиль Ответить
30.06.2012 16:13:06 Класс БД на Singleton Сообщение #2
Admin

Admin

Администратор

Администратор

Дата регистрации:
27.05.2010 21:23:42

Сообщений: 3063

Да, через деструктор надо это делать.
Профиль Ответить
30.06.2012 16:15:00 Класс БД на Singleton Сообщение #3
brussens

brussens

Мега-мастер

Мега-мастер

Дата регистрации:
11.10.2011 22:50:07

Сообщений: 438

А как быть, если public function __destruct работает, а private function __destruct выдаёт ошибку Warning: Call to private DB::__destruct() from context '' during shutdown ignored in Unknown on line 0
Профиль Ответить
30.06.2012 16:23:21 Класс БД на Singleton Сообщение #4
Admin

Admin

Администратор

Администратор

Дата регистрации:
27.05.2010 21:23:42

Сообщений: 3063

Попробуйте сделать его protected, а затем, если работать не будет, то public.
Профиль Ответить
30.06.2012 16:25:21 Класс БД на Singleton Сообщение #5
brussens

brussens

Мега-мастер

Мега-мастер

Дата регистрации:
11.10.2011 22:50:07

Сообщений: 438

пробовал, выдаёт ту же ошибку... public та всё хорошо, да только за безопасность я боюсь
Профиль Ответить
30.06.2012 16:55:19 Класс БД на Singleton Сообщение #6
Admin

Admin

Администратор

Администратор

Дата регистрации:
27.05.2010 21:23:42

Сообщений: 3063

Никакой опасности нет, тем более, невозможно использовать private, поскольку вызывается этот метод в том объекте, который его использует. Разумеется, private другой объект вызвать не может, отсюда и ошибка.
Профиль Ответить
30.06.2012 18:04:14 Класс БД на Singleton Сообщение #7
brussens

brussens

Мега-мастер

Мега-мастер

Дата регистрации:
11.10.2011 22:50:07

Сообщений: 438

А, вон оно что) Ну тогда я спокоен) Спасибо)
Профиль Ответить