<?php namespace App\Services; use \PDO; class DB { private static $pdoInstance = null; private static $cache = []; public static function connect() { if (self::$pdoInstance === null) { $dsn = 'mysql:host=127.127.126.50;dbname=ngallery;charset=utf8mb4'; $username = 'root'; $password = ''; try { self::$pdoInstance = new PDO($dsn, $username, $password); self::$pdoInstance->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch (PDOException $ex) { die("Connection failed: " . $ex->getMessage()); } } return self::$pdoInstance; } public static function query($query, $params = array(), $useCache = false) { if ($useCache && isset(self::$cache[$query])) { return self::$cache[$query]; } $statement = self::connect()->prepare($query); try { $statement->execute($params); if (explode(' ', $query)[0] === 'SELECT' || explode(' ', $query)[0] === 'SHOW' || explode(' ', $query)[0] === 'DESCRIBE') { $data = $statement->fetchAll(PDO::FETCH_ASSOC); if ($useCache) { self::$cache[$query] = $data; } return $data; } } catch (PDOException $ex) { die("Query failed: " . $ex->getMessage()); } } } ?>