Singleton class

Singleton class se používá v případech, kdy potřebujeme mít jistotu, že budeme volat instanci třídy pouze jednou. Já používám tento návrhový vzor na vytvoření připojení k databázi.

Princip funguje tak, že zavoláním metody zjistíme, jestli jsme už vytvořili nějakou instanci dříve (tato instance zůstane stále vytvořená, díky tomu, že je statická). Pokud není vytvořená, tak se vytvoří, jinak se zavolá původní instance.

Zde je můj příklad pro navázání připojení pomocí PDO. Následně volám připojení tímto způsobem Connection::connect().

class Connection extends PDO
{
    private static $_instance = null;

    public function __construct()
    {
        self::$_instance = $this->realConnect();
    }

    public static function connect()
    {
        if (!self::$_instance instanceof Connection && self::$_instance == null) {
            new Connection();
        }

    return self::$_instance;
    }

    protected function realConnect()
    {
       $dbh = new PDO('mysql:host=' . DB_HOST . ';dbname=' .DB_NAME, DB_LOGIN, DB_PASSWORD);

       return $dbh;
    }
}