Разрешите, тогда и я уже выскажусь. Если уж делать такое, то я бы делал через setInstance(IDBWrapper $dbWrapper);
объясню почему:
1) Я люблю контролировать код, мне не нравится что синглтон позволяет проинициализироваться где угодно.
2) Single responsibility. Создание и доступ мы разделяем, поэтому определение что будет внутри будет вынесенно в бутстрап приложения где ему и место и уберется хард код в виде:
PHP:
require dirname(__FILE__)."/safemysql.class.php";
self::$instance = new safemysql($cfg);
3) Делает этот враппер тестируемым, ведь туда можно назначить мок.