<?php
class Singleton
{
private static $instance;
private function __construct() {} // Blokujemy domyślny konstruktor publiczny
private function __clone(){} //Uniemożliwia utworzenie kopii obiektu
public static function getInstance ()
{
//Wersja czytelniejsza
if (self::$instance === null) {
self::$instance = new Singleton();
}
return self::$instance;
//Wersja z operatorem ternarnym
return (self::$instance === null) ? self::$instance = new Singleton() : self::$instance;
}
}
// Pobieramy instancję
$singletonNew = new Singleton();
$singleton = Singleton::getInstance();
PD9waHAKCiBjbGFzcyBTaW5nbGV0b24KIHsKICAgcHJpdmF0ZSBzdGF0aWMgJGluc3RhbmNlOwogICBwcml2YXRlIGZ1bmN0aW9uIF9fY29uc3RydWN0KCkge30gLy8gQmxva3VqZW15IGRvbXnFm2xueSBrb25zdHJ1a3RvciBwdWJsaWN6bnkKICAgcHJpdmF0ZSBmdW5jdGlvbiBfX2Nsb25lKCl7fSAvL1VuaWVtb8W8bGl3aWEgdXR3b3J6ZW5pZSBrb3BpaSBvYmlla3R1CiAgIAogICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldEluc3RhbmNlICgpCiAgICB7CiAgICAgICAgLy9XZXJzamEgY3p5dGVsbmllanN6YQogICAgICAgIGlmIChzZWxmOjokaW5zdGFuY2UgPT09IG51bGwpIHsKICAgICAgICAgICAgc2VsZjo6JGluc3RhbmNlID0gbmV3IFNpbmdsZXRvbigpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gc2VsZjo6JGluc3RhbmNlOwoKICAgICAgICAvL1dlcnNqYSB6IG9wZXJhdG9yZW0gdGVybmFybnltCiAgICAgICAgcmV0dXJuIChzZWxmOjokaW5zdGFuY2UgPT09IG51bGwpID8gc2VsZjo6JGluc3RhbmNlID0gbmV3IFNpbmdsZXRvbigpIDogc2VsZjo6JGluc3RhbmNlOwogICAgfQogfQogCiAvLyBQb2JpZXJhbXkgaW5zdGFuY2rEmQogJHNpbmdsZXRvbk5ldyA9IG5ldyBTaW5nbGV0b24oKTsKICRzaW5nbGV0b24gPSBTaW5nbGV0b246OmdldEluc3RhbmNlKCk7