Пример кода 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( 'Ираклий' );
Использование паттерна синглтон, например, удобно, когда не хочется много раз поднимать коннект к БД.
Теперь по порядку, что поисходит когда мы обращаемся к синглтону.
- мы обращаемся из любого места сценария к статическому методу gate() класса MyClass
- метод gate() внутри себя либо создает экземпляр себя (инстанцирует) и помещает полученный объект в закрытую статическую переменную $clas и возвращает объект, либо возвращает из $clas созданный ранее объект.
- выполняется метод Hello()
По сути, это замена многократным операциям инстанцирования:
$myClass = new MyClass();
$myClass->Hello( 'Ираклий' );
С существенным отличием, что $myClass будет всегда
новый инстанцируемый объект , а при использовании синглтона - всегда
один и тот же экземпляр .
Понятное дело, что инстанцируемый объект будет создан всего один раз и будет сохранять свое состояние на протяжении работы всего сценария. Этакий - вечный карман.