PHP Singleton - Синглтон, пример паттерна
Паттерн (pattern) – это стандартизированное решение какой-либо часто встречающейся проблемы, идея правильного, красивого решения с перспективой легкого расширения функционала.
Паттерн - это некий оптимальный, оригинальный и продуманный подход к решению часто встречающихся задач, который используется во всех языках программирования. Реализации паттернов могут быть различными.
Паттерн Singleton (одиночка) - цель создать только ОДНУ (!!!) реализацию класса с целью экономии ресурса и не допустить коллизий повторных подключений. Нужно создать единственную реализацию класса и его методов и при попытках создать ещё реализации этого класса всегда возвращать результат первой ранее созданной реализации класса.
Пример php-кода:
<?php class Db { private static $db=null; public function conect() { if (self::$db===null) { self::$db=new self();//Теперь НЕ null - Создаём объект себя echo "1-е ПОДКЛЮЧЕНИЕ!!!<br>\n"; } else { echo "ЕЩЁ ПОДКЛЮЧЕНИЯ..!<br>\n"; } return self::$db; } public function f1() { echo "Функция f1()<br>\n"; } private function __construct() {}//Запрет создать объект private function __clone() {} //Запрет клонировать объект private function __wakeup() {} //Запрет восстановлений любых соединений } $ob=Db::conect();//1-е ПОДКЛЮЧЕНИЕ!!! Db::conect();//ЕЩЁ ПОДКЛЮЧЕНИЯ..! Db::conect();//ЕЩЁ ПОДКЛЮЧЕНИЯ..! Db::conect();//ЕЩЁ ПОДКЛЮЧЕНИЯ..! $ob->f1(); //Через единственный объект вызываем Функцию f1() //и т.д. ?>
При попытке повторного использования класса будут возвращаться результаты первой реализации, а при создании одного или многих объектов класса через оператор new всегда будет показывать ошибку, что не допустит повторных реализаций и гарантирует только ОДНУ реализацию класса.