<MyRusakov.ru />

Написание лайфхаков на Python

Написание лайфхаков на Python

Данный курс научит Вас автоматизировать самые разные задачи на языке Python, благодаря чему Вы сэкономите на рутине тысячи и тысячи часов своей жизни. Курс состоит из 20 примеров в различных областях: файлы и директории, медиа-файлы, Интернет, Web-мастеринг, Unreal Engine. Каждый пример упрощает ту или иную задачу в своей области, при этом каждый из них создаётся прямо на Ваших глазах и тщательно комментируется.

Помимо самих уроков Вы так же получаете и множество упражнений. По сути, Вы создадите свои собственные 20 небольших проектов, благодаря чему у Вас появится и практика, и портфолио.

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

Подпишитесь на мой канал на YouTube, где я регулярно публикую новые видео.

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

Подписавшись по 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

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