Синглтон (Singleton)
Синглтон (англ. Singleton) — класс, который может иметь только один экземпляр.
Singleton выполняется только один раз при создании. Далее он возвращает данные.
Например, можно создать класс, который будет работать с базой данных. При первом обращении идёт подключение с базой данной, при повторном обращении подключения уже не происходит, а сразу происходит запросы.
Ниже показан пример Singleton.
class DB { private static $_instance; private $_connection; private function __construct() { $this->_connection = new mysqli('localhost', 'user', 'password', 'db_table'); if ($this->_connection->connect_error) { exit('Не удалось подключиться. Ошибка №'.$mysqli->connect_errno.': '.$mysqli->connect_error); } } public static function getInstance() { if (!self::_instance) { self::_instance = new self; } return self::_instance; } public function query($sql) { return $this->_connection->query($sql); } // защищаем от создания второго экземпляра через клонирование private function __clone() {} // защищаем от создания второго экземпляра через unserialize private function __wakeup() {} }
Пример работы Singleton.
$pages = DB::getInstance()->query('SELECT id,title FROM pages'); $users = DB::getInstance()->query('SELECT id,title FROM users'); while ($row = $pages->fetch_assoc()) { echo $row->title; }
В переменной $pages
идёт подключение к базе данных, а в переменной $users
подключения нет, идёт сразу запрос на выборку данных.
Поддержать автора