Паттерн Singleton в чём разница? Прочитал описание тут:job-blog.bullgare.ru/2009/07/паттерны-проектирования-в-php/
Некоторые ресурсы приложения уникальны, т.е. может быть один и только один его экземпляр. К примеру, соединение с базой данных через соответствующий дескриптор уникально. Нам нужно иметь доступ к созданному дескриптору базы данных, т.к. каждый раз при запросе открывать и закрывать соединение во время загрузки страницы накладно.
Для этого отлично подойдёт паттерн Singleton. Объект является синглтоном, если в приложении можно обратиться к одному и только к одному такому объекту.
Пример кода там на странице не смог скопировать.
Вопрос: чем этот навороченный код лучше$db = mysqli_connect('localhost','aa','bb','cc');
mysqli_set_charset($db, "utf8");
Вот $db это Singleton ))

21 Авг 2019 в 07:06
176 +1
0
Ответы
1

Отличие между использованием паттерна Singleton и простым созданием объекта базы данных mysqli_connect заключается в том, что Singleton позволяет создать только один экземпляр объекта и обеспечивает глобальный доступ к этому объекту из любой точки приложения.

В случае с использованием паттерна Singleton, код будет выглядеть примерно следующим образом:

class Database {
private static $instance;
private $connection;
private function __construct() {
$this->connection = mysqli_connect('localhost','aa','bb','cc');
mysqli_set_charset($this->connection, "utf8");
}
public static function getInstance() {
if (!self::$instance) {
self::$instance = new Database();
}
return self::$instance;
}
public function getConnection() {
return $this->connection;
}
}
// Использование Singleton
$db = Database::getInstance();
$connection = $db->getConnection();

Таким образом, в приведенном примере объект Database создается только один раз, и каждый раз, когда требуется доступ к базе данных, можно получить экземпляр объекта Database с помощью метода getInstance() и получить доступ к соединению с базой данных через метод getConnection(). Это позволяет избежать создания множества соединений с базой данных, что может быть неэффективно и накладно.

20 Апр в 13:07
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 493 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир