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 всегда будет показывать ошибку, что не допустит повторных реализаций и гарантирует только ОДНУ реализацию класса.


