Utiliser un singleton pour se connecter à une base de données avec PDO

Méthode 1

/**
* Classe de connection à la base de données utilisant un singleton pattern
*/
class Connection {

protected static $pdo;

/**
* Construction de la connection
*/
private function __construct() {
try {
self::$pdo = new PDO(
'mysql:host=localhost;dbname=test',
USERNAME, PASSWORD);
self::$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
self::$pdo->exec("SET CHARACTER SET utf8");
} catch (PDOException $e) {
echo 'ERROR: ' . $e->getMessage();
}
}

/**
* Instanciation de la connection si elle ne l'est pas
* @return string
*/
public static function getConnection() {
if (!self::$pdo) {
new Connection();
}
return self::$pdo;
}

}

Source :

Méthode 2

class ConnectionFactory {

private static $factory;

public static function getFactory() {
if (!self::$factory)
self::$factory = new ConnectionFactory();
return self::$factory;
}

private $pdo;

public function getConnection() {
if (!$pdo)
try {
$pdo = new PDO(
'mysql:host=localhost;dbname=test',
USERNAME, PASSWORD);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
$pdo->exec("SET CHARACTER SET utf8");
} catch (PDOException $e) {
echo 'ERROR: ' . $e->getMessage();
}
return $pdo;
}

}

Source :