<MyRusakov.ru />

Создание игр на Unreal Engine 5

Создание игр на Unreal Engine 5

Данный курс научит Вас созданию игр на Unreal Engine 5. Курс состоит из 12 модулей, в которых Вы с нуля освоите этот движок и сможете создавать самые разные игры.

В курсе Вы получите всю необходимую теоретическую часть, а также увидите массу практических примеров. Дополнительно, почти к каждому уроку идут упражнения для закрепления материала.

Помимо самого курса Вас ждёт ещё 8 бесплатных ценных Бонусов: «Chaos Destruction», «Разработка 2D-игры», «Динамическая смена дня и ночи», «Создание динамической погоды», «Создание искусственного интеллекта для NPC», «Создание игры под мобильные устройства», «Создание прототипа RPG с открытым миром» и и весь курс «Создание игр на Unreal Engine 4» (актуальный и в 5-й версии), включающий в себя ещё десятки часов видеоуроков.

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

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

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

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

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

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

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

Какая тема Вас интересует больше?

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

Создание объекта в классе БД
14.04.2012 23:01:13 Создание объекта в классе БД Сообщение #1
brussens

brussens

Мега-мастер

Мега-мастер

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

Сообщений: 438

Михаил, вот есть класс работы с БД
<?php
class DB {
private static $msqlicnct;
private function __construct() {
self::$msqlicnct = new Mysqli('localhost', 'root', '', 'beatzone');
return self::$msqlicnct;
}
public static function select() {
new DB();
$b = self::$msqlicnct->query("SELECT * FROM users WHERE id = '2'"->fetch_assoc();
print_r($b);
}
}
DB::select();
?>

класс основан на синглтоне, только вот хотелось бы new DB(); не дублировать в каждом новом методе класса, как его можно создавать один раз? Заранее спасибО)
Профиль
15.04.2012 13:48:47 Создание объекта в классе БД Сообщение #2
Admin

Admin

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

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

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

Сообщений: 3063

Это какой-то испорченный singleton. Надо создать всего 1 статический метод, который создаёт новый объект и записывает в поле, либо если он уже существует возвращает его из поля. Все остальные методы должны быть нестатическими. Вызывали метод, появился объект, а дальше к нему применяете все необходимые методы.
Профиль
15.04.2012 15:29:36 Создание объекта в классе БД Сообщение #3
brussens

brussens

Мега-мастер

Мега-мастер

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

Сообщений: 438

Ведь по сути то по синглтону конструктор должен быть private, а статичный метод его создаёт, так ведь? Как тогда обратиться к статическому свойству класса? Ведь если конструктор привэйт, то нельзя создавать объект напрямую
Профиль
15.04.2012 15:30:58 Создание объекта в классе БД Сообщение #4
Admin

Admin

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

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

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

Сообщений: 3063

К нему надо обратиться только 1 раз в методе, создающем объект. Все остальные методы (уже нестатические) к данному полю вообще не должны обращаться.
Профиль
15.04.2012 15:52:47 Создание объекта в классе БД Сообщение #5
brussens

brussens

Мега-мастер

Мега-мастер

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

Сообщений: 438

Михаил, по вашему совету исправил ошибки, только вот как тогда обращаться уже непосредственно к самому объекту Mysqli, для выполнения query()?
Через конструкцию в методе insertos() не получается, пишут ошибку наличия метода.
Вот исправленный кодclass DB {
private static $msqlicnct;
private function __construct() {
new Mysqli('localhost', 'root', '', 'beatzone');
}
public static function select() {
if ( is_null(self::$msqlicnct) ) {
self::$msqlicnct = new DB();
}
return self::$msqlicnct;
}
public function insertos() {
$b = self::select();
$b->query("SELECT * FROM users WHERE id = '2'"->fetch_assoc();
echo $b['name'] . " " . $b['secondname'];
}
}
DB::select()->insertos();
Профиль
15.04.2012 16:33:16 Создание объекта в классе БД Сообщение #6
brussens

brussens

Мега-мастер

Мега-мастер

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

Сообщений: 438

Михаил, посидел, потупил, вот вроде понял, всё работает, скажите, какие замечания есть?
class DB {
private static $msqlicnct = NULL;
private function __construct() {
$this->db = new Mysqli('localhost', 'root', '', 'beatzone');
}
private function __clone() {}
private function __wakeup() {}
public static function select() {
if ( is_null(self::$msqlicnct) ) {
self::$msqlicnct = new DB();
}
return self::$msqlicnct;
}
public function insertos() {
$b = $this->db->query("SELECT * FROM users WHERE id = '2'"->fetch_assoc();
echo $b['name'] . " " . $b['secondname'];
}
}
DB::select()->insertos();
Профиль
15.04.2012 17:22:36 Создание объекта в классе БД Сообщение #7
Admin

Admin

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

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

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

Сообщений: 3063

Теперь всё хорошо, только вот так писать можно, если Вы вызываете объект всего 1 раз:
DB::select()->insertos();
В противном случае, надо просто записать объект в переменную и дальше уже применять методы:
$db = DB::select();
$db->insertos();
$db->insertos();
Профиль
15.04.2012 17:26:19 Создание объекта в классе БД Сообщение #8
brussens

brussens

Мега-мастер

Мега-мастер

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

Сообщений: 438

Спасибо Михаил)) Это просто каркас))) Далее уже методы будут дописываться и класс будет использоваться для всего проекта)
Профиль