📡 You're offline — showing cached content
New version available!
Quick Access
Tutorials PHP for Beginners Design Patterns — Singleton

Design Patterns — Singleton

5 min read
Singleton ensures only one instance of a class exists throughout the application. A private constructor and static getInstance() method control creation. Useful for database connections but makes testing harder.

Singleton Pattern

class Database {
    private static ?Database $instance = null;
    private PDO $pdo;

    private function __construct() {
        $this->pdo = new PDO(
            "mysql:host=localhost;dbname=app",
            "user", "pass"
        );
    }

    // Prevent cloning
    private function __clone() {}

    public static function getInstance(): static {
        if (static::$instance === null) {
            static::$instance = new static();
        }
        return static::$instance;
    }

    public function query(string $sql): array {
        return $this->pdo->query($sql)->fetchAll();
    }
}

// Usage
$db = Database::getInstance();
$db->query("SELECT * FROM users");