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)
Сегодня мы поговорим о том, как выбрать лучшие курсы Power BI в Украине, особенно для…
В 2023 году во всех крупнейших регионах конкуренция за вакансию выросла на 5–12%. Не исключением…
Unicorn Hunter/Talent Manager Лина Калиш создала бесплатный трекер поиска работы в Notion, систематизирующий все этапы…
Edtech-стартап Mate academy принял решение отправить своих работников в десятидневный отпуск – с 25 декабря…
Служба безопасности Украины задержала в Киеве 46-летнего программиста, который за деньги устанавливал шпионские программы и…
IT-специалист Джордан Катлер создал и выложил на Github подборку разнообразных ресурсов, которые помогут достичь уровня…