<MyRusakov.ru />

WordPress 6 с Нуля до Гуру

WordPress 6 с Нуля до Гуру

Этот курс научит Вас созданию самых разных сайтов на самой популярной в мире CMS - WordPress. Вы увидите установку и настройку локального сервера, разбор каждой настройки, каждой кнопки и каждого пункта меню в панели WordPress.

Также Вы получите и всю практику, поскольку прямо в курсе с нуля создаётся полноценный Интернет-магазин, который затем публикуется в Интернете. И всё это прямо на Ваших глазах.

Помимо уроков к курсу идут упражнения для закрепления материала.

И, наконец, к курсу идёт ценнейший Бонус по тому, как используя ChatGPT и создавая контент для сайта, можно выйти на пассивный доход. Вы наглядно увидите, как зарегистрироваться в ChatGPT (в том числе, и если Вы из России), как правильно выбрать тему для сайта, как правильно генерировать статьи для него(чтобы они индексировались поисковыми системами) и как правильно монетизировать трафик на сайте.

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

Подпишитесь на мой канал на 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

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