db != null) { return; } $dsn = '%s:host=%s;dbname=%s;port=%s'; $connectString = sprintf($dsn, $data[self::DB_TYPE], $data[self::DB_HOST], $data[self::DB_DB], $data[self::DB_PORT] . $data[self::DB_EXTRA]); try { $this->db = new PDO($connectString, $data[self::DB_USER], $data[self::DB_PASSWORD]); } catch (PDOException $e) { trigger_error($e->getMessage()); die($e->getCode()); } } public function getOne(string $query, array $args): ?DatabaseObject { $data = $this->getAll($query, $args); if (count($data) > 0) { return $data[0]; } return null; } public function getAll(string $query, array $args): array { $stmt = $this->db->prepare($query); $stmt->setFetchMode(PDO::FETCH_CLASS, DatabaseObject::class); $stmt->execute($args); return $stmt->fetchAll(); } public function execute(string $query, array $args): bool { $stmt = $this->db->prepare($query); return $stmt->execute($args); } }