Паттерн 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
199 +1
0
Ответы
1

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

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

class Database {
private static instance;privateinstance;
private
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=connection = connection=db->getConnection();

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

20 Апр 2024 в 13:07
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир