Simpel PDO interface class

Simpel klasse for enkel PDO interface.

class DB
{

    protected static $instance = null;

    protected function __construct() {}
    protected function __clone()     {}

    public static function instance()
    {
        if (self::$instance === null)
        {
            $opt  = [
                PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
                PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
                PDO::ATTR_EMULATE_PREPARES   => FALSE,
            ];
            $dsn = 'mysql:host='.DB_HOST.';dbname='.DB_NAME.';charset=utf8';
            self::$instance = new PDO($dsn, DB_USER, DB_PASS, $opt);
        }
        return self::$instance;
    }

    public static function __callStatic($method, $args)
    {
        return call_user_func_array([self::instance(), $method], $args);
    }

    public static function run($sql, $args = [])
    {
        if (!$args)
        {
             return self::instance()->query($sql);
        }
        $stmt = self::instance()->prepare($sql);
        $stmt->execute($args);
        return $stmt;
    }
}

Eksempler på bruk:

define('DB_HOST', 'host');
define('DB_NAME', 'db');
define('DB_USER', 'user');
define('DB_PASS', 'pw');

require 'dbclass.php';

DB::run('INSERT IGNORE INTO table (f1, f2, f3) VALUES (?,?,?)', [$id, $did, $uri]);