Есть файл с классом подключения PDO и файл с классом конфига, в котором находятся данные для подключения (хост, пароль и др.)
Конфиг:
<?PHP
class config {
public $host = "localhost";
public $base = "1111";
public $user = "root";
public $pass = "1111";
public $charset = "utf8";
}
?>
Подключение:
<?PHP
class db{
public function __construct()
{
$this->connect();
}
private function connect()
{
$host = $config->host;
$dbname = $config->base;
$charset = $config->charset;
$user = $config->user;
$pass = $config->pass;
$dsn = "mysql:host=$host;dbname=$dbname;charset=$charset";
$opt = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_LAZY,
PDO::ATTR_EMULATE_PREPARES => false,
];
$pdo = new PDO($dsn, $user, $pass, $opt);
return $this;
}
public function execute($sql)
{
$sth = $pdo->prepare($sql);
return $sth->execute();
}
public function query($sql)
{
$exe = $this->execute($sql);
$res = $exe->fetch(PDO::FETCH_LAZY);
return $res;
}
}
?>
Если указать данные конфига прямо в файле с подключением, то все работает. Я так делать не хочу. Но опять же при попытке подключения с данными, которые берутся из файла, выводит ошибку:
Fatal error: Uncaught PDOException: SQLSTATE[HY000] [2019] Unknown character set in E:\OSPanel\domains\test.ru\classes\_new.db.php:21 Stack trace: #0
E:\OSPanel\domains\test.ru\classes\_new.db.php(21): PDO->__construct('mysql:host=;dbn...', NULL, NULL, Array) #1
E:\OSPanel\domains\test.ru\classes\_new.db.php(5): db->connect() #2
E:\OSPanel\domains\test.ru\index.php(40): db->__construct('localhost', 'root', '1111', '1111', 'utf8') #3 {main} thrown in E:\OSPanel\domains\test.ru\classes\_new.db.php on line 21
Еще есть автоподгрузка классов в индексовом файле:
$config = new config;
$db = new db($config->host, $config->user, $config->pass, $config->base, $config->charset);
Что делать?