PHP OOP: Singleton (Jedináček) [9]

PHP OOP: Singleton (Jedináček) [9]

Singleton je další návrhový vzor, který znamená, že daná třída má pouze jednu (globální) instanci a jen s tou se v aplikaci dále pracuje. Mezi typické použití patří vytvoření připojení do databáze.

 

Singleton příklad - databáze

https://github.com/hydroxid/php_examples/blob/main/3666_singleton/singleton_db.php

class Database
{
    private static $db;

    // disable direct call
    private function __clone() { }

    // disable direct call
    private function __construct()
    {
        echo 'Only one instance of Database is created' . PHP_EOL;
    }

    public static function connect()
    {
        if (!isset(self::$db)) {
            self::$db = new Database();
        }
        return self::$db;
    }
}

$db1 = Database::connect();
$db2 = Database::connect();
$db3 = Database::connect();

Vrátí:

Only one instance of Database is created


Singleton příklad - více tříd

https://github.com/hydroxid/php_examples/blob/main/3666_singleton/singleton.php

class Singleton
{
    private static Singleton $instance;

    public Entity $entity;

    // disable direct call
    private function __clone() { }

    // disable direct call
    private function __construct()
    {
        echo 'Only one instance of Singleton is created' . PHP_EOL;
        $entity = new Entity('name');
    }

    public static function getInstance() : Singleton
    {
        if (!isset(self::$instance)) {

            self::$instance = new Singleton();
        }
        return self::$instance;
    }
}

class Entity
{
    public $name;

    public function __construct(string $name)
    {
        $this->name = $name;
        echo $this->name . PHP_EOL;
    }
}

$singleton1 = Singleton::getInstance();
$singleton2 = Singleton::getInstance();
$singleton3 = Singleton::getInstance();

Vrátí:

Only one instance of Singleton is created
name

Jak se ti článek líbil?

Komentáře (0)

Přidat komentář