Синглтон соединения с БД может быть проблематичным.К счастью, это не обязательно для совместного использования соединения.У вас может быть класс диспетчера подключений, который при задании ранее используемого хоста, имени пользователя и базы данных возвращает уже открытое соединение.
abstract class ConnectionManager {
protected $connections = array();
function connect($host, $db, $user, $pw) {
if (! isset($this->connections[$host][$db][$user])) {
$this->connections[$host][$db][$user] = $this->newConnection($host, $db, $user, $pw));
}
}
abstract protected function newConnection($host, $db, $user, $pw);
}
class EzSQLConnectionManager extends ConnectionManager {
protected function newConnection($host, $db, $user, $pw) {
return new ezSQL_mysql($user, $passwd, $database, $host);
}
}
Здесь не рассматривается, как безопасно хранить учетные данные пользователя.Пароли не должны распространяться волей-неволей по всем сценариям, что может привести вас к этому подходу.