Nikt Cię nie rozniesie

Ale oczywiście to jest zły pomysł w dokładnie takiej formie... dlaczego? Bo każdorazowo łączy się z bazą...
Singleton jest powszechnie używany i sprawdzony

Co prawda można przerobić tą funkcję tak by to miało sens - ale nie ma co odkładać na bok sprawdzonych wzorców ;/
A dla tych co mają problem z obsługą wielu różnych połączeń do bazy i singletonem - mam dwa słowa - "fabryka singletonów"

- dziękuję

Zresztą wydaje mi się że każdy prosty DBAL jest zbudowany wstępnie w oparciu o singleton

Przykład pseudo fabryki singletonów do obsługi bazy danych:
class Db
{
public static getInstance
($connectionName = 'default') {
$data = self::$connections[$connectionName];
if(!isset(self::$instances[$connectionName])) self::$instances[$connectionName] = new PDO('mysql:host='.$data->host.';dbname='.$data->dbname, $data->user, $data->password);
return self::$instances[$connectionName];
}
public function addConnection($host,$user,$password,$dbname,$connectionName = 'default')
{
self::$connections[$connectionName] = new stdClass;
self::$connections[$connectionName]->host = $host;
self::$connections[$connectionName]->user = $user;
self::$connections[$connectionName]->password = $password;
self::$connections[$connectionName]->dbname = $dbname;
}
}
// przykład użycia:
// ustalamy dane do domyślnego połączenia:
Db::addConnection('localhost','user','pass','tabelka');
// i do drugiego:
Db::addConnection('123.123.123.123','user2','pass2','tabelkaX','drugie');
$db = Db::getInstance(); // pobieramy domyślne połączenie
// potem gdzie indziej możemy się do drugiego odwołać poprzez:
$db = Db::getInstance('drugie');
// itd...
EDIT: oczywiście przedstawiłem sam koncept bez obsługi wyjątków i sprawdzania błędów