Если я правильно понял вопрос, то обойти создание нового подключения можно с помощью паттерна Singleton.
Выглядит это так:
class Db
{
private $pdo;
private static $instance;
private function __construct()
{
$dbOptions = (require __DIR__ . '/../../settings/setting.php')['db'];
$this->pdo = new PDO(
'mysql:host=' . $dbOptions['host'] . ';dbname=' . $dbOptions['dbname'],
$dbOptions['user'],
$dbOptions['password']
);
$this->pdo->exec('SET NAMES UTF8');
}
public static function getInstance(): self
{
// если объект подключения не создан и равен NULL
if (self::$instance === null) {
// то создается новый объект класса Db;
self::$instance = new self();
}
// если подключение создано, просто возвращаем уже созданное подключение
return self::$instance;
}
}
Соответственно и подключение уже будет происходить через:
Db::getInstance();