Пример кода php класса pattern singleton


class MyClass {
// переменная, где хранится экземпляр класса static private $clas = false;

// точка входа в класс, где происходит инстанцирование себя public static function gate()
{ if( is_object( self::$clas ) == false ){
self::$clas = new self; }
return self::$clas;
}

/* некоторый метод */
public function Hello( $name )
{ echo 'Hello, ' . $name . '!'; }

/* end class */ }



/* обращаемся к нашему синглтону */
MyClass::gate()->Hello( 'Ираклий' );
Использование паттерна синглтон, например, удобно, когда не хочется много раз поднимать коннект к БД.

Теперь по порядку, что поисходит когда мы обращаемся к синглтону.

  1. мы обращаемся из любого места сценария к статическому методу gate() класса MyClass
  2. метод gate() внутри себя либо создает экземпляр себя (инстанцирует) и помещает полученный объект в закрытую статическую переменную $clas и возвращает объект, либо возвращает из $clas созданный ранее объект.
  3. выполняется метод Hello()

По сути, это замена многократным операциям инстанцирования:

$myClass = new MyClass();
$myClass->Hello( 'Ираклий' );
С существенным отличием, что $myClass будет всегда новый инстанцируемый объект , а при использовании синглтона - всегда один и тот же экземпляр .

Понятное дело, что инстанцируемый объект будет создан всего один раз и будет сохранять свое состояние на протяжении работы всего сценария. Этакий - вечный карман.