Если вы хотите получить полный контроль над открытием и закрытием соединений, я предлагаю централизовать только переменные $dsn
, $user
, $pass
и $options
.Я предполагаю, что есть также переменные типа $host
, $db
и $charset
, которые вы не раскрыли нам, но давайте добавим их.
Позволяет назвать этот файл global_db.php
:
<?php
$host = "127.0.0.1";
$db = "mydb";
$charset = "UTF-8";
$user = "root";
$pass = "";
$dsn = "mysql:host=$host;dbname=$db;charset=$charset";
$options = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false,
];
Похоже, что у нас есть все товары, имейте в виду, я не проверяю это, поэтому мы можем получить синтаксическую ошибку или две.
Теперь в наших классах или других файлах php, где мы хотимчтобы открыть соединение.
Позволяет называть эту страницу fooClass.php
<?php
require_once 'global_db.php';
class FooClass {
public function __construct() {
try {
$pdo = new PDO(
$GLOBALS['dsn'],
$GLOBALS['user'],
$GLOBALS['pass'],
$GLOBALS['options']);
} catch (\PDOException $e) {
throw new \PDOException($e->getMessage(), (int)$e->getCode());
}
}
}
Это должно сработать или, по крайней мере, дать вам общее представление о том, куда идти по вашему собственному маршруту.,Есть много других способов сделать подобное, но не нужно слишком усложнять вещи.
nJoy!