<?php
class Database {
    /**
     * @var Database
     */
    protected static $_dbInstance = null;
    /**
     * @var PDO
     */
    protected $_dbHandle;

    public function getDbConnection(): PDO
    {
        return $this->_dbHandle;
    }
    public static function getInstance(): ?Database
    {
        if(self::$_dbInstance == null) {
            self::$_dbInstance = new self();
        }
        return self::$_dbInstance;
    }

    private function __construct() {
        try {
            $this->_dbHandle = new PDO("sqlite:Databases/ecobuddy.sqlite");
            $this->_dbHandle->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
            $this->_dbHandle->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
        }
        catch (PDOException $e) {
            echo $e->getMessage();
        }
    }
    public function __destruct() {
        $this->_dbHandle = null; // destroys the PDO handle when no longer needed
    }
}