React/Vite Frontend (hifi-src) + PHP/MariaDB Backend (hifi/api) fuer den Car-Hifi Umbau-Shop HifiPlanet in Amorbach, inkl. Admin-Panel, 2FA, Wartungsmodus, Cookie-Consent und rechtlichen Pflichtseiten. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
34 lines
963 B
PHP
34 lines
963 B
PHP
<?php
|
|
|
|
namespace App\Config;
|
|
|
|
use PDO;
|
|
use PDOException;
|
|
|
|
class Database
|
|
{
|
|
private static ?PDO $instance = null;
|
|
|
|
public static function connection(): PDO
|
|
{
|
|
if (self::$instance === null) {
|
|
$config = require __DIR__ . '/../../config/config.php';
|
|
$db = $config['db'];
|
|
$dsn = "mysql:host={$db['host']};dbname={$db['name']};charset={$db['charset']}";
|
|
|
|
try {
|
|
self::$instance = new PDO($dsn, $db['user'], $db['pass'], [
|
|
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
|
|
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
|
|
PDO::ATTR_EMULATE_PREPARES => false,
|
|
]);
|
|
} catch (PDOException $e) {
|
|
http_response_code(500);
|
|
echo json_encode(['error' => 'Datenbankverbindung fehlgeschlagen']);
|
|
exit;
|
|
}
|
|
}
|
|
|
|
return self::$instance;
|
|
}
|
|
}
|