Singleton (синглтон, одиночка) – один из простейших для понимания шаблонов проектирования в PHP. Это обычный класс в PHP, в логику которого добавлена проверка на единственность создания его экземпляра.
Согласно определению, одиночка — один из самых простых паттернов, когда происходит проверка того, что экземпляр всего один и к нему обеспечивается единая точка доступа. Многие специалисты и вовсе считают его антипаттерном.
Назначение Singleton — сделать объект единственным экземпляром класса. Позволяет получить доступ к уникальному объекту из любой точки приложения.
Рассмотрим использование одиночки на примере создания соединения к базе данных MySQL.
Создадим класс DB. Информацию о соединении будем хранить в статической приватной переменной $_instance. Чтобы получить ее значение будем использовать статический метод getInstance(), в котором будем делать проверку на null переменной $_instance, в случае истины создавать ее через new self, иначе – возвращать ее.
Пример реализации этого класса:
'mysql:host=' . self::DB_HOST . ';dbname=' . self::DB_NAME,
self::DB_USER,
self::DB_PASS,
[PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'"]
);
}
private function __clone () {}
private function __wakeup () {}
public static function getInstance()
{
if (self::$_instance != null) {
return self::$_instance;
}
return new self;
}
} Использование
$db = DB::getInstance(); $db2 = DB::getInstance(); var_dump($db == $db2); // bool(true)
На фоне роста спроса на ликвидность в бычьем рынке 2025 года, криптозаймы снова выходят на…
Прокси (proxy), или прокси-сервер — это программа-посредник, которая обеспечивает соединение между пользователем и интернет-ресурсом. Принцип…
Согласитесь, было бы неплохо соединить в одно сайт и приложение для смартфона. Если вы еще…
Повсеместное распространение смартфонов привело к огромному спросу на мобильные игры и приложения. Миллиарды пользователей гаджетов…
В перечне популярных чат-ботов с искусственным интеллектом Google Bard (Gemini) еще не пользуется такой популярностью…
Скрипт (англ. — сценарий), — это небольшая программа, как правило, для веб-интерфейса, выполняющая определенную задачу.…