try { $dsn = "mysql:host={$config['DB_HOST']};port={$config['DB_PORT']};dbname={$config['DB_DATABASE']};charset=utf8mb4"; $options = [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, PDO::ATTR_EMULATE_PREPARES => false, PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci" ]; $this->connection = new PDO($dsn, $config['DB_USERNAME'], $config['DB_PASSWORD'], $options); } catch (PDOException $e) { error_log("Database Connection Error: " . $e->getMessage()); die("Database connection failed. Please check your configuration."); } } /** * Get singleton instance */ public static function getInstance() { if (self::$instance === null) { self::$instance = new self(); } return self::$instance; } /** * Get PDO connection */ public function getConnection() { return $this->connection; } /** * Prepare and execute query */ public function query($sql, $params = []) { try { $stmt = $this->connection->prepare($sql); $stmt->execute($params); return $stmt; } catch (PDOException $e) { error_log("Query Error: " . $e->getMessage()); throw $e; } } /** * Fetch all results */ public function fetchAll($sql, $params = []) { $stmt = $this->query($sql, $params); return $stmt->fetchAll(); } /** * Fetch single result */ public function fetchOne($sql, $params = []) { $stmt = $this->query($sql, $params); return $stmt->fetch(); } /** * Insert record and return last insert ID */ public function insert($sql, $params = []) { $this->query($sql, $params); return $this->connection->lastInsertId(); } /** * Update record and return affected rows */ public function update($sql, $params = []) { $stmt = $this->query($sql, $params); return $stmt->rowCount(); } /** * Delete record and return affected rows */ public function delete($sql, $params = []) { $stmt = $this->query($sql, $params); return $stmt->rowCount(); } /** * Begin transaction */ public function beginTransaction() { return $this->connection->beginTransaction(); } /** * Commit transaction */ public function commit() { return $this->connection->commit(); } /** * Rollback transaction */ public function rollback() { return $this->connection->rollBack(); } /** * Prevent cloning */ private function __clone() {} /** * Prevent unserialization */ public function __wakeup() { throw new Exception("Cannot unserialize singleton"); } }
Fatal error: Uncaught Error: Class "Database" not found in H:\Other computers\My MacBook Pro\htdocs\sada1\src\Models\Merchant.php:13 Stack trace: #0 H:\Other computers\My MacBook Pro\htdocs\sada1\src\Controllers\AuthController.php(19): Merchant->__construct() #1 H:\Other computers\My MacBook Pro\htdocs\sada1\src\Helpers\Router.php(133): Controllers\AuthController->__construct() #2 H:\Other computers\My MacBook Pro\htdocs\sada1\src\Helpers\Router.php(86): Router::callControllerAction('AuthController@...', Array) #3 H:\Other computers\My MacBook Pro\htdocs\sada1\public\routes.php(57): Router::dispatch() #4 H:\Other computers\My MacBook Pro\htdocs\sada1\public\index.php(45): require_once('H:\\Other comput...') #5 {main} thrown in H:\Other computers\My MacBook Pro\htdocs\sada1\src\Models\Merchant.php on line 13