<?php
define("ENVIRONMENT","local");
class DatabaseConfig {
private static $config = [
'local' => [
'host' => '127.0.0.1',
'dbname' => 'cg_ad_local',
'username' => 'root',
'password' => 'root',
'charset' => 'utf8mb4'
],
'production' => [
'host' => 'sql313.aaa.com',
'dbname' => 'aaa',
'username' => 'aaa',
'password' => 'aaa',
'charset' => 'utf8mb4'
]
];
/**
* 获取当前环境配置
* @return string 'local' 或 'production'
*/
public static function getEnvironment() {
// 检查是否定义了环境常量
if (defined('ENVIRONMENT')) {
return ENVIRONMENT;
}
// 根据主机名判断环境
$host = $_SERVER['HTTP_HOST'] ?? '';
if (strpos($host, 'localhost') !== false ||
strpos($host, '127.0.0.1') !== false ||
strpos($host, 'local') !== false) {
return 'local';
}
// 默认为生产环境
return 'production';
}
/**
* 获取数据库配置
* @param string $environment 环境 (local|production)
* @return array 数据库配置
*/
public static function getConfig($environment = null) {
if ($environment === null) {
$environment = self::getEnvironment();
}
return self::$config[$environment] ?? self::$config['production'];
}
/**
* 创建数据库连接
* @param string $environment 环境 (local|production)
* @return PDO 数据库连接对象
*/
public static function getConnection($environment = null) {
$config = self::getConfig($environment);
try {
$dsn = "mysql:host={$config['host']};dbname={$config['dbname']};charset={$config['charset']}";
$pdo = new PDO($dsn, $config['username'], $config['password']);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
return $pdo;
} catch (PDOException $e) {
throw new Exception("数据库连接失败: " . $e->getMessage());
}
}
}
?>