Current directory: /home/klas4s23/domains/585455.klas4s23.mid-ica.nl/public_html/Gastenboek/uploads
<?php
/**
* Database Configuration Class
*/
class Database {
private static $instance = null;
private $connection;
// Database configuration from environment variables
private $host;
private $database;
private $username;
private $password;
private function __construct() {
$this->host = $_ENV['DB_HOST'] ?? 'database';
$this->database = $_ENV['DB_NAME'] ?? 'api_db';
$this->username = $_ENV['DB_USER'] ?? 'api_user';
$this->password = $_ENV['DB_PASS'] ?? 'api_password';
try {
$dsn = "mysql:host={$this->host};dbname={$this->database};charset=utf8mb4";
$this->connection = new PDO($dsn, $this->username, $this->password, [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false
]);
} catch (PDOException $e) {
throw new Exception("Database connection failed: " . $e->getMessage());
}
}
public static function getInstance() {
if (self::$instance === null) {
self::$instance = new self();
}
return self::$instance;
}
public function getConnection() {
return $this->connection;
}
// Prevent cloning
private function __clone() {}
// Prevent unserializing
public function __wakeup() {
throw new Exception("Cannot unserialize Database singleton");
}
}
/**
* Base API Response Class
*/
class ApiResponse {
public static function success($data = null, $message = 'Success', $code = 200) {
http_response_code($code);
return json_encode([
'success' => true,
'message' => $message,
'data' => $data,
'timestamp' => date('Y-m-d H:i:s')
]);
}
public static function error($message = 'Error', $code = 400, $details = null) {
http_response_code($code);
return json_encode([
'success' => false,
'message' => $message,
'details' => $details,
'timestamp' => date('Y-m-d H:i:s')
]);
}
}
/**
* Request Validator Class
*/
class Validator {
public static function validateEmail($email) {
return filter_var($email, FILTER_VALIDATE_EMAIL) !== false;
}
public static function validateRequired($value) {
return !empty(trim($value));
}
public static function validateNumeric($value) {
return is_numeric($value);
}
public static function validateLength($value, $min = 0, $max = null) {
$length = strlen(trim($value));
if ($length < $min) return false;
if ($max !== null && $length > $max) return false;
return true;
}
}