Как уже говорили другие, бросьте синглтон, тогда я, вероятно, сделаю что-то вроде этого:
interface Connection_Interface
{
public function connect();
public function disconnect();
public function exec($sql);
// etc...
}
class Connection implements Connection_Interface
{
public function __construct($host, $username, $password, $database);
public function connect();
public function disconnect();
public function exec($sql);
// etc...
}
Затем еще один класс, который принимает несколько соединений:
class Connection_Multiple implements Connection_Interface
{
protected $_connections = array();
public function __construct();
public function add(Connection $connection);
public function connect();
public function disconnect();
public function exec($sql)
{
// decide here which connection you want to use, then...
return $connection->exec($sql);
}
// etc...
}
Поскольку как одно соединение, так и несколько классов соединения реализуют один и тот же интерфейс, вы можете использовать любой из них одинаково.